AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

IAM 정책을 변경하지 않은 경우 리소스에 태그를 지정한 후 CloudFormation 스택 작업이 실패하는 이유는 무엇입니까?

5분 분량
0

리소스 태그를 AWS CloudFormation 스택에 적용할 때 오류가 발생하지만 AWS Identity and Access Management(IAM) 보안 주체를 업데이트하지 않았습니다.

해결 방법

새 AWS 계정에서 적합한 태깅 권한 없이 CloudFormation 스택에서 리소스 태그를 생성, 업데이트 또는 삭제하면 스택 작업이 실패합니다.

기존 계정은 2024년 2월 29일까지 새로운 스택 작업 동작에서 제외됩니다.

서비스 중단을 방지하려면 IAM 보안 주체에게 필요한 태깅 권한을 부여하십시오. IAM 보안 주체가 리소스 태그를 관리할 수 없는 경우 CloudFormation이 스택 작업을 수행하며 리소스 태그를 변경하지는 않습니다. 따라서 스택 태그가 리소스 태그와 일치하지 않을 수 있습니다. 이 문제를 해결하려면 CloudFormation 템플릿 내에서 리소스 태그를 동기화해야 합니다.

중요: 다음 해결 방법에서는 사용 사례에 따라 일부 단계가 선택 사항일 수 있습니다.

IAM 보안 주체에 누락된 권한 추가

다음 단계에 따라 기존 계정이나 새 계정에서 CloudFormation으로 리소스 태그를 관리하십시오.

태깅 작업에 사용되는 IAM 보안 주체 찾기

리소스에 태그를 지정하는 데 사용할 IAM 보안 주체를 찾으려면 다음 단계를 완료하십시오.

  1. CloudFormation 콘솔을 엽니다.
  2. 탐색 창에서 **Stacks(스택)**를 선택합니다.
  3. 스택 이름을 선택한 다음, 스택 ID를 복사합니다.
  4. AWS CloudTrail 콘솔을 엽니다.
  5. 탐색 창에서 **Event history(이벤트 기록)**를 선택합니다.
  6. **Lookup attributes(속성 조회)**에서 **Resource name(리소스 이름)**을 선택합니다. 그런 다음, 검색 상자에 스택 ID를 입력하고 검색을 실행합니다.
    참고: **Event history(이벤트 기록)**에는 지난 90일 동안의 이벤트가 포함됩니다. 스택 ID 검색에서 이벤트가 표시되지 않으면 스택을 업데이트하십시오. 스택 업데이트는 CloudTrail 이벤트 기록에 기록됩니다. 업데이트가 기록되면 IAM 보안 주체를 검색할 수 있습니다.
  7. **Event history list(이벤트 기록 목록)**의 첫 번째 이벤트 이름을 선택한 다음, 이벤트 기록을 검토합니다.
  8. 이벤트 페이로드에서 IAM 보안 주체를 찾습니다.
  9. “requestParameters”를 검색하여 roleArn 속성을 검토합니다. roleArn이 있는 경우 문자열 값은 IAM 보안 주체입니다.
  10. roleArn이 없는 경우 “userIdentity”를 검색하여 principalId 값을 검토합니다.

IAM 정책에 태깅 권한 부여

코드형 인프라(IaC) 서비스가 IAM 보안 주체를 관리하는 경우 동일한 IaC 서비스로 관련 IAM 정책을 업데이트해야 합니다. AWS Management Console을 사용하여 태깅 권한을 부여하려면 새 정책을 생성하거나 기존 정책을 업데이트하십시오. 또한 AWS Command Line Interface(AWS CLI)에서 put-role-policy를 실행하여 IAM 보안 주체의 태깅 권한을 구성할 수도 있습니다.

자세한 내용은 CloudFormation 스택의 태깅 권한 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

중요: 새 계정에 CloudFormation 스택을 배포하려면 다음 섹션을 건너뛰십시오.

(선택 사항) 기존 계정의 CloudFormation 스택 전체에서 리소스 태그 동기화

CloudFormation 스택에 대한 태깅 권한을 구성할 때 리소스 태그가 CloudFormation 템플릿의 태그와 일치하지 않을 수 있습니다. 템플릿 태그를 리소스 태그와 일치시키려면 다음 단계를 완료하십시오.

영향을 받은 스택에 드리프트가 있는지 확인

영향을 받은 스택에 드리프트가 있는지 확인하려면 다음 단계를 완료하십시오.

  1. AWS Health Dashboard를 열고 영향을 받는 리소스 데이터를 가져옵니다.
  2. CloudFormation 스택에서 드리프트를 탐지하고 드리프트 결과를 검토합니다.
    참고: 드리프트 탐지에 대한 자세한 내용은 가져오기 및 드리프트 탐지 작업을 지원하는 리소스개별 스택 리소스의 드리프트 탐지를 참조하십시오.
  3. 리소스의 드리프트 상태가 IN_SYNC이고 리소스가 드리프트 탐지를 지원하는 경우 리소스가 정확하게 구성된 것입니다.
  4. 리소스의 드리프트 상태가 MODIFIED이면 리소스를 선택하고 **View drift details(드리프트 세부 정보 보기)**를 선택하여 차이점을 검토합니다.
  5. 발생하는 드리프트 시나리오에 따라 다음 섹션의 단계를 완료합니다.

드리프트 탐지를 지원하는 리소스 태그를 CloudFormation 템플릿과 동기화

다음 시나리오에서 드리프트 탐지를 지원하는 리소스 태그를 동기화하십시오.

  • 리소스의 드리프트 상태가MODIFIED이고 리소스가 드리프트 탐지를 지원합니다.
  • 모든 리소스에 REMOVE 차이 유형 상태 코드가 있는 태그 변경 사항이 있습니다.
  • 리소스에 REMOVE 레이블이 지정되지 않은 태그 변경 사항이 있으며 **Actual(실제)**의 각 태그 키가 Expected(예상) 내에 있습니다.

중요: 이러한 단계는 다른 리소스에서 스택 수준 태그를 일시적으로 제거합니다. 스택 수준 태그를 사용하는 서비스가 있는 경우 리소스 자체의 태그 수정을 참조하여 중단을 방지하십시오.

리소스 태그를 CloudFormation 템플릿과 동기화하려면 다음 단계를 완료하십시오.

  1. 원본 CloudFormation 템플릿의 복사본을 저장합니다.
  2. 복사한 CloudFormation 템플릿에서 REMOVE 레이블이 지정된 태그를 모두 제거합니다.
  3. 새 템플릿으로 스택을 업데이트한 다음, REMOVE 레이블이 지정된 스택 수준 태그를 모두 제거합니다.
    경고: 스택의 모든 리소스에서 태그가 제거됩니다. 실패한 태그를 다시 적용해야 합니다.
  4. 원래 템플릿으로 되돌아간 다음, 모든 스택 수준 태그를 다시 추가한 상태로 템플릿을 재배포합니다.
    참고: 이러한 업데이트는 충분한 권한이 없을 때 적용에 실패한 모든 태그를 다시 적용합니다.

리소스의 태그 수정

다음과 같은 시나리오에서 리소스의 태그를 수정합니다.

  • 리소스에 REMOVE 레이블이 지정된 태그 변경 사항이 있습니다. 리소스의 태그 변경 사항은 Expected(예상) 상태의 태그 키가 Actual(실제) 상태에서 누락되었음을 나타냅니다.
  • 리소스에 REMOVE 레이블이 지정되지 않은 태그 변경 사항이 있습니다. 태그 키가 모두 Expected(예상) 상태와 Actual(실제) 상태이지만 값이 서로 다릅니다.

리소스에 대한 다음 드리프트 세부 정보를 검토합니다.

  • Expected(예상) 아래에 목록으로 표시되어 있고 **Actual(실제)**에서 누락된 각 태그 키/값을 기록해 둡니다. 이러한 태그를 추가해야 합니다.
  • Actual(실제) 아래에 목록으로 표시되어 있지만 Expected(예상) 아래에는 없는 각 태그 키를 기록해 둡니다. 이러한 태그를 제거해야 합니다.
  • Expected(예상)Actual(실제) 아래에 목록으로 표시되어 있고 값이 서로 다른 각 태그 키를 기록해 둡니다. 이러한 태그는 **Expected(예상)**로 업데이트해야 합니다.

리소스의 태그를 수정하려면 다음 단계를 완료하십시오.

  1. CloudFormation 콘솔을 엽니다.
  2. 탐색 창에서 **Stacks(스택)**를 선택합니다.
  3. 영향을 받는 스택을 선택합니다.
  4. **Resources(리소스)**를 선택한 다음, 영향을 받는 리소스의 Physical ID(물리적 ID) 링크를 선택합니다.
  5. 리소스의 Tags(태그) 섹션에서 각 태그를 수동으로 추가, 제거 또는 업데이트합니다. 태그는 드리프트 세부 정보의 Expected(예상) 아래에 목록으로 표시된 상태와 일치해야 합니다.
  6. **Save(저장)**를 선택합니다.

스택과 리소스가 동기화되어 있는지 확인하려면 드리프트 탐지 작업을 다시 수행하는 것이 좋습니다. 확인하려면 영향을 받은 스택에 드리프트가 있는지 확인 섹션의 단계를 완료하십시오.

드리프트 탐지를 지원하지 않는 리소스 태그 동기화

리소스의 드리프트 상태가 IN_SYNC이고 리소스가 드리프트 탐지를 지원하지 않는 경우 드리프트 탐지를 지원하지 않는 리소스 태그를 동기화합니다.

참고: 다음 업데이트는 충분한 권한이 없을 때 적용에 실패한 모든 태그를 다시 적용합니다.

리소스가 드리프트 탐지를 지원하지 않는 경우 CloudFormation 템플릿을 사용하여 불일치를 해결하고 CloudFormation에서 해당 리소스를 관리하는지 확인합니다.

다음 단계를 완료하십시오.

  1. 원본 CloudFormation 템플릿의 복사본을 저장합니다.
  2. 복사한 CloudFormation 템플릿에서 리소스 태그를 배포된 리소스와 비교합니다.
  3. 표시되는 태그에 따라 상황에 해당하는 단계를 완료합니다.

리소스에 지정된 태그가 없고 CloudFormation 템플릿에 정의된 태그가 있는 경우 다음 단계를 완료하십시오.

  1. CloudFormation 템플릿에서 모든 태그를 제거합니다.
  2. 새 CloudFormation 템플릿을 적용하여 스택을 업데이트합니다. 그런 다음, 스택 수준 태그를 모두 제거합니다.
  3. 원래 CloudFormation 템플릿으로 되돌아간 다음, 모든 스택 수준 태그를 다시 추가한 상태로 템플릿을 재배포합니다.

배포된 리소스에 지정된 태그가 스택의 태그와 일치하지 않는 경우 다음 단계를 완료하십시오.

  1. 스택 수준 태그를 모두 제거하여 스택을 업데이트합니다.
  2. CloudFormation 템플릿에서, 배포된 리소스와 일치하도록 모든 태그를 수정합니다.
  3. 새 CloudFormation 템플릿으로 스택을 업데이트합니다. 이전에 연결된 스택 수준 태그가 모두 포함되었는지 확인합니다.
AWS 공식
AWS 공식업데이트됨 일 년 전