반응형
CloudFormation 삭제시 리소스 유지
AWS CloudFormation 으로 테이블 만들고 인프라 만들고 하는데
CloudFormation 을 삭제하면 한번에 싹 지워지기 때문에 좋기는 한데
다른 CloudFormation 과 공유해서 사용하는 자원들의 경우 삭제 하면 안될 경우가 있습니다
그 때를 위해서 STACK 삭제시에도 유지하는 DeletionPolicy 라는 옵션이 있네요
DeletionPolicy 옵션의 값은 3가지가 있습니다
- [Retain] 옵션을 지정하면 스택 삭제 시 리소스가 유지됩니다
- [Snapshot] 옵션을 지정하면 해당 리소스를 삭제하기 전에 리소스의 스냅샷을 생성합니다
참고: 이 옵션은 스냅샷을 지원하는 리소스에만 사용할 수 있습니다. - [Delete] 옵션을 지정하면 스택과 함께 리소스가 삭제됩니다.
JSON
{
"Description": "AWS CloudFormation DeletionPolicy demo",
"Resources": {
"SGroup1": {
"Type": "AWS::EC2::SecurityGroup",
"DeletionPolicy": "Retain",
"Properties": {
"GroupDescription": "EC2 Instance access"
}
},
"SGroup2": {
"Type": "AWS::EC2::SecurityGroup",
"DeletionPolicy": "Retain",
"Properties": {
"GroupDescription": "EC2 Instance access"
}
},
"SGroup1Ingress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"DeletionPolicy": "Retain",
"Properties": {
"GroupName": {
"Ref": "SGroup1"
},
"IpProtocol": "tcp",
"ToPort": "80",
"FromPort": "80",
"CidrIp": "0.0.0.0/0"
}
},
"SGroup2Ingress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"DeletionPolicy": "Retain",
"Properties": {
"GroupName": {
"Ref": "SGroup2"
},
"IpProtocol": "tcp",
"ToPort": "80",
"FromPort": "80",
"CidrIp": "0.0.0.0/0"
}
}
}
}
YAML
Description: AWS CloudFormation DeletionPolicy demo
Resources:
SGroup1:
Type: 'AWS::EC2::SecurityGroup'
DeletionPolicy: Retain
Properties:
GroupDescription: EC2 Instance access
SGroup2:
Type: 'AWS::EC2::SecurityGroup'
DeletionPolicy: Retain
Properties:
GroupDescription: EC2 Instance access
SGroup1Ingress:
Type: 'AWS::EC2::SecurityGroupIngress'
DeletionPolicy: Retain
Properties:
GroupName: !Ref SGroup1
IpProtocol: tcp
ToPort: '80'
FromPort: '80'
CidrIp: 0.0.0.0/0
SGroup2Ingress:
Type: 'AWS::EC2::SecurityGroupIngress'
DeletionPolicy: Retain
Properties:
GroupName: !Ref SGroup2
IpProtocol: tcp
ToPort: '80'
FromPort: '80'
CidrIp: 0.0.0.0/0
보안그룹에 대한 설정값인데 이게 사라지면 난리 나겠지요
그러니 DeletionPolicy: Retain 으로 지정해서 삭제되지 않게 합시다
Serverless Framework 삭제시 리소스 유지
serverless.yml
resources:
Resources:
PushDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Retain
Properties:
TableName: ${self:custom.DYNAMODB_TABLE}
AttributeDefinitions:
- AttributeName: id
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
BillingMode: PAY_PER_REQUEST
PUSH 서비스를 만드는 중인데 테이블이 필요해서 설정했는데
문제는 sls remove 시에 테이블이 삭제 되어 버립니다
그러니 sls remove 시에도 테이블이 삭제되지 않도록
DeletionPolicy: Retain 을 설정해놓습니다
참고사이트
https://aws.amazon.com/ko/premiumsupport/knowledge-center/delete-cf-stack-retain-resources/
반응형
'IT > Serverless' 카테고리의 다른 글
서버리스 api gateway 도메인 적용 (0) | 2019.08.14 |
---|---|
서버리스 사이트 스크린샷 찍기 (예전방식) (0) | 2019.08.12 |
서버리스 웹브라우저 한글폰트 적용하기 (0) | 2019.08.12 |
서버리스 네이버 검색어 가져오기 (serverless) (0) | 2019.08.09 |
서버리스 AWS IAM Key 수명관리 (0) | 2019.08.07 |
DynamoDB : Attribute name is a reserved keyword 해결방법 (0) | 2019.08.01 |
DeletionPolicy 옵션 사용시 주의사항 (0) | 2019.07.31 |
네이버 블로그 파워링크 클릭 (0) | 2019.07.30 |