AWS에서 CloudFormation으로 인프라 자동화 시 발생하는 에러와 해결 방법 =========
AWS CloudFormation은 인프라를 코드로 자동화하여 관리할 수 있도록 도와주는 강력한 도구입니다. 하지만, 사용하다 보면 여러 가지 에러가 발생할 수 있습니다. 이번 글에서는 AWS CloudFormation을 사용할 때 자주 발생하는 에러와 그 해결 방법에 대해 살펴보겠습니다.
CloudFormation 스택 생성 시 발생하는 일반적인 에러
1. ValidationError
CloudFormation 템플릿을 작성할 때 가장 흔히 발생하는 에러 중 하나는 ValidationError입니다. 이 에러는 주로 YAML 또는 JSON 형식의 문법 오류에서 발생합니다.
예시:
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub "${AWS::StackName}-bucket"
VersioningConfiguration: # <- 이 줄에서 잘못된 들여쓰기로 문제 발생
Status: Enabled
해결 방법:
- 템플릿의 문법을 확인하고, JSON 또는 YAML 형식이 올바른지 검토합니다.
- AWS CloudFormation Linter를 사용하여 템플릿을 검증할 수 있습니다.
2. InsufficientCapabilities
IAM 역할이나 정책을 포함한 CloudFormation 스택을 생성할 때 InsufficientCapabilities 에러가 발생할 수 있습니다. 이는 IAM 리소스를 생성하기 위해 필요한 권한이 설정되지 않았을 때 발생합니다.
예시:
Resources:
MyRole:
Type: AWS::IAM::Role
Properties:
RoleName: MyRole
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: sts:AssumeRole
해결 방법:
--capabilities 플래그를 추가하여 IAM 리소스를 생성할 수 있는 권한을 명시적으로 지정합니다.aws cloudformation create-stack --stack-name MyStack --template-body file://template.yaml --capabilities CAPABILITY_IAM
3. ResourceConflict
이미 존재하는 리소스를 생성하려고 할 때 ResourceConflict 에러가 발생합니다. 예를 들어, 동일한 이름의 S3 버킷을 두 번 생성하려 할 때 이 문제가 발생합니다.
해결 방법:
4. Rollback 에러
CloudFormation 스택을 생성 중에 에러가 발생하면 스택이 롤백됩니다. 이때 발생하는 ROLLBACK_COMPLETE 상태는 스택이 실패했음을 의미합니다. 동일한 스택 이름으로 재생성을 시도하면 에러가 발생할 수 있습니다.
해결 방법:
aws cloudformation delete-stack --stack-name MyStack
마무리
AWS CloudFormation은 인프라 자동화에 큰 도움을 주지만, 다양한 에러가 발생할 수 있습니다. 위에서 언급한 에러와 해결 방법을 통해 CloudFormation을 보다 효율적으로 사용할 수 있을 것입니다.
복잡한 인프라를 관리할 때는 항상 템플릿을 소스 관리 시스템에 보관하고, 변경 사항을 주의 깊게 검토하는 것이 중요합니다. CloudFormation을 통해 인프라를 코드로 관리함으로써, 반복 가능하고 신뢰성 높은 서비스를 구축할 수 있기를 바랍니다.