- AWS CloudFormation은 인프라를 코드로 관리할 수 있게 해주는 강력한 서비스입니다.
- CloudFormation 템플릿을 배포할 때 때로는 특별한 권한이 필요할 수 있습니다.
- 이러한 특별한 권한을 'Capabilities'라고 부릅니다.
- Capabilities는 템플릿이 특정 리소스를 생성하거나 수정할 수 있음을 명시적으로 인정하는 방법입니다.
- 이는 보안을 강화하고 의도치 않은 리소스 변경을 방지하는 데 도움이 됩니다.
2 CAPABILITY_IAM과 CAPABILITY_NAMED_IAM
- CAPABILITY_IAM과 CAPABILITY_NAMED_IAM은 IAM 리소스와 관련된 capabilities입니다.
- 이 capabilities는 CloudFormation 템플릿이 IAM 리소스를 생성하거나 수정할 때 필요합니다.
- IAM 리소스에는 IAM 사용자, 역할, 그룹, 정책, 액세스 키, 인스턴스 프로필 등이 포함됩니다.
- CAPABILITY_IAM은 일반적인 IAM 리소스 생성에 사용됩니다.
- CAPABILITY_NAMED_IAM은 이름이 지정된 IAM 리소스를 생성할 때 사용됩니다.
- 이 capabilities를 사용하면 템플릿이 중요한 IAM 리소스를 생성할 수 있음을 명시적으로 인정하게 됩니다.
3 CAPABILITY_AUTO_EXPAND
- CAPABILITY_AUTO_EXPAND는 템플릿에 매크로나 중첩 스택이 포함되어 있을 때 필요합니다.
- 매크로는 템플릿의 동적 변환을 수행하는 기능입니다.
- 중첩 스택은 스택 내에 다른 스택을 포함하는 구조를 말합니다.
- 이 capability를 사용하면 템플릿이 배포 전에 변경될 수 있음을 인정하는 것입니다.
- CAPABILITY_AUTO_EXPAND는 복잡한 인프라 구조를 더 유연하게 관리할 수 있게 해줍니다.
4 InsufficientCapabilitiesException
- InsufficientCapabilitiesException은 필요한 capabilities가 제공되지 않았을 때 발생하는 예외입니다.
- 이 예외는 보안 조치의 일환으로 CloudFormation에 의해 발생됩니다.
- 템플릿에 IAM 리소스나 매크로, 중첩 스택이 포함되어 있지만 해당 capabilities를 지정하지 않으면 이 예외가 발생합니다.
- 이 예외를 방지하려면 템플릿의 내용을 잘 파악하고 필요한 capabilities를 명시적으로 지정해야 합니다.
5 Capabilities 사용 방법
- AWS Management Console을 통해 스택을 생성하거나 업데이트할 때 capabilities를 지정할 수 있습니다.
- AWS CLI를 사용할 경우,
--capabilities
옵션을 통해 필요한 capabilities를 지정할 수 있습니다.
- AWS SDK를 사용하는 경우, 스택 생성 또는 업데이트 API 호출 시
capabilities
파라미터를 설정할 수 있습니다.
6 Capabilities 사용 시 주의사항