[CloudFormon] Update ReplacePolicy 등에 대한 적용 시기

5429 단어 AWSCloudFormationtech
예를 들어 DynamoDB를 정의했고 자원은create-stack에서 ap-northeast-1과 eu-central-1에 미리 만들어졌다고 가정합니다
템플릿 1
Resources:
  DynamoDBResource:
    Type: AWS::DynamoDB::Table
    Properties: 
      # 以下略
그리고 아래처럼 템플릿을 업데이트합니다.
템플릿 2
Conditions:
  IsAn1: !Equals [ !Ref 'AWS::Region', 'ap-northeast-1' ]

Resources:
  Condition: IsAn1
  DynamoDBResource:
    Type: AWS::DynamoDB::Table
    Properties: 
      # 以下略
↑의 템플릿에 따라 p-northeast-1과 eu-central-1의 창고에 대해 "Condition"의 조건에 따라 eu-central-1에서 표를 삭제합니다
이 때, 창고가 업데이트되었지만 eu-central-1의 테이블 자체가 삭제되지 않으려면, 템플릿의 정의에서 "Update Replace Policy"를 지정할 수 있습니다
템플릿 3
Conditions:
  IsAn1: !Equals [ !Ref 'AWS::Region', 'ap-northeast-1' ]

Resources:
  Condition: IsAn1
  # Retainにするとスタックが更新されてもリソースが残る
  UpdateReplacePolicy: Retain
  # DeletionPolicyも一緒に指定する必要がある
  DeletionPolicy: Delete
  DynamoDBResource:
    Type: AWS::DynamoDB::Table
    Properties: 
      # 以下略
그러나 템플릿 2 대신 템플릿 3을 사용하여 스택을 업데이트해도 Update Replace Policy가 반영되지 않습니다.그래서 eu-centaral-1의 책상은 사라졌다.
대책으로 다음과 같은 순서로 창고를 업데이트하면 eu-central-1의 책상이 사라지지 않습니다
  • 템플릿 1에서create-stack(ap-northeast-1과 eu-central-1)
  • 템플릿 4의 업데이트-stack (eu-central-1만 가능)
    템플릿 4
    Resources:
      DynamoDBResource:
        Type: AWS::DynamoDB::Table
        UpdateReplacePolicy: Retain
        # DeletionPolicyも一緒に指定する必要がある
        DeletionPolicy: Delete
        Properties: 
          # 以下略
    
  • 템플릿 2의 업데이트-stack(ap-northeast-1과 eu-central-1)
  • "Update Replace Policy: Retain"을 전체 전략으로 사용하는 경우 별도의 템플릿
  • 일 수 있음
  • 이것은 Update Replace Policy로 조건이 한 번에 만들어진 템플릿에서 바뀔 때 표의 사라짐을 방지하기 때문에 필요하지 않으면 여기에 지정하지 않아도 됩니다
  • 결론


    Update Replace Policy, Deletion Policy를 지정하기 시작할 때 자원의 교체/삭제가 발생하면 설정된 정책이 반영되지 않습니다
    교체/삭제 전에 Policy 설정 필요

    좋은 웹페이지 즐겨찾기