CreationPolicy
1 AWS CloudFormation CreationPolicy
- AWS CloudFormation은 인프라를 코드로 관리할 수 있게 해주는 강력한 서비스입니다.
- 이 서비스의 중요한 기능 중 하나가 CreationPolicy입니다.
- CreationPolicy를 통해 리소스 생성 과정을 더욱 세밀하게 제어할 수 있습니다.
2 CreationPolicy란?
- CreationPolicy는 CloudFormation 스택의 리소스 생성 과정을 제어하는 정책입니다.
- 이 정책은 특정 리소스가 성공적으로 생성되었는지 확인하는 데 사용됩니다.
- 주로 EC2 인스턴스, Auto Scaling 그룹 등의 리소스에 적용됩니다.
- CreationPolicy를 사용하면 리소스 생성이 완료되었다는 신호를 받을 때까지 CloudFormation이 대기합니다.
3 CreationPolicy의 주요 속성
- CreationPolicy에는 다음과 같은 주요 속성이 있습니다:
- ResourceSignal: 리소스가 생성 완료 신호를 보내야 하는 횟수를 지정합니다.
- Timeout: CloudFormation이 생성 완료 신호를 기다리는 최대 시간을 지정합니다.
4 CreationPolicy 사용 예시
- 다음은 EC2 인스턴스에 CreationPolicy를 적용하는 예시입니다:
Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-0abcdef1234567890
InstanceType: t2.micro
CreationPolicy:
ResourceSignal:
Timeout: PT15M
Count: 1
- 이 예시에서 CloudFormation은 최대 15분 동안 1개의 성공 신호를 기다립니다.
- 15분 이내에 신호를 받지 못하면 스택 생성이 실패하고 롤백됩니다.
5 CreationPolicy의 장점
- CreationPolicy를 사용하면 다음과 같은 이점이 있습니다:
- 리소스 생성의 신뢰성 향상
- 복잡한 설정 과정의 완료 보장
- 스택 생성 실패 시 자동 롤백으로 일관성 유지
- 긴 설치 과정이 필요한 애플리케이션 배포에 유용
6 실제 사용 사례: 커스텀 AMI 생성
- 다음은 CreationPolicy를 사용하여 커스텀 AMI를 생성하는 과정을 제어하는 예시입니다:
Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-0abcdef1234567890
InstanceType: t2.micro
UserData:
Fn::Base64: !Sub |
#!/bin/bash
# 소프트웨어 설치 및 구성 스크립트
/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}
CreationPolicy:
ResourceSignal:
Timeout: PT4H
Count: 1
- 이 템플릿에서는 EC2 인스턴스가 생성된 후 UserData 스크립트가 실행됩니다.
- 스크립트가 완료되면
cfn-signal명령을 통해 CloudFormation에 신호를 보냅니다. - CreationPolicy는 최대 4시간 동안 이 신호를 기다립니다.
- 4시간 내에 신호를 받지 못하면 스택 생성이 실패하고 롤백됩니다.
7 주의사항
- CreationPolicy 사용 시 다음 사항에 주의해야 합니다:
- Timeout 값은 신중하게 설정해야 합니다. 너무 짧으면 정상적인 프로세스도 실패할 수 있습니다.
- 리소스에서 반드시 신호를 보내도록 해야 합니다. 그렇지 않으면 스택이 무기한 대기할 수 있습니다.
- 복잡한 설치 과정이 있는 경우, 오류 처리 로직을 포함시켜야 합니다.