【AWS CloudFormation】 「복제 시간의 컨트롤 (RTC)」등을 포함한 S3 복제 설정의 템플릿의 작성 방법

10493 단어 CloudFormationAWS

전치



현장에서 AWS의 CloudFormation에 첫 도전을 하게 되었습니다.
"복제 시간 제어 (RTC)"등을 포함한,
S3 복제 설정 템플릿을 작성하는 방법에 걸린 적이 있었으므로 게시합니다.

내용



다음과 같은 템플릿 파일로 스택을 만들고 실행했습니다.
S3BucketOriginal:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub 'original-${AWS::AccountId}'
      VersioningConfiguration:
        Status: Enabled
      ReplicationConfiguration:
        Role: !Sub 'arn:aws:iam::${AWS::AccountId}:role/OriginBucketBackupRole'
        Rules:
        - Id: BackUpRule
          Status: Enabled
          DeleteMarkerReplication:
            Status: Disabled
          Destination:
            Bucket: !Sub 'arn:aws:s3:::backup-${AWS::AccountId}'
            EncryptionConfiguration:
              ReplicaKmsKeyID: !Sub 'arn:aws:kms:${AWS::Region}:${AWS::AccountId}:alias/BackupKey'
            Metrics: 
              Status: Enabled
              EventThreshold: 
                Minutes: 15
            ReplicationTime:
              Status: Enabled
              Time:
                Minutes: 15
          SourceSelectionCriteria: 
            SseKmsEncryptedObjects:
              Status: Enabled

그러면 다음과 같은 오류가 발생했습니다.
DeleteMarkerReplication cannot be used for this version of Cross Region Replication configuration schema.
Please refer to S3 Developer Guide for more information

이 오류는 아래 CloudFormation 사용자 가이드 'ReplicationRule'의 주석과 같습니다.
앞의 오류 메시지에서 this version는 S3의 복제 설정 버전이었습니다.



다음과 같이 Filter를 설정하지 않으면 S3의 복제 설정은 V1이 되어 버린다는 것이었습니다.
・・・
      ReplicationConfiguration:
        Role: !Sub 'arn:aws:iam::${AWS::AccountId}:role/OriginBucketBackupRole'
        Rules:
        - Id: BackUpRule
          Status: Enabled
          DeleteMarkerReplication:
             Status: Disabled
          Filter:         # 追加
            Prefix: ""    # 追加
・・・

Filter를 설정하지 않으면 다음과 같이 Replication Time Control (S3 RTC) 설정도 오류가 발생합니다.
ReplicationTime cannot be used for this version of the replication configuration schema.
Please refer to S3 Developer Guide for more information

Filter 를 설정한 템플릿으로 스택을 실행하여 이번에...
라고 생각하면 이하와 같은 에러가 되어 버렸습니다.
Priority must be specified for this version of Cross Region Replication configuration schema.
Please refer to the S3 Developer Guide for more information

Priority(우선순위)는 CloudFormation 사용자 가이드에서 "필수: 아니오"입니다.



매니지먼트 콘솔로부터의 설정이라면, 자동으로 설정해 주는 것이군요・・・
전혀 의식한 적이 없었습니다 ...



그 밖에도, 복제 시간의 컨트롤(RTC)등의 설정은 매니지먼트 콘솔상이라고 체크 박스로 ON 하는 것입니다만,
CloudFormation 템플릿에는 시간 수를 입력해야 합니다.
이 근처, 매니지먼트 콘솔에서는 의식하지 않기 때문에 어렵다・・・


            Metrics: 
              Status: Enabled
              EventThreshold: 
                Minutes: 15
            ReplicationTime:
              Status: Enabled
              Time:
                Minutes: 15

결과



최종적으로는 템플릿 파일을 다음과 같이 하는 것으로, 복제 설정을 작성할 수 있었습니다.
(BucketName, ReplicaKmsKeyID 근처의 지정 방법은 적절히 바꾸십시오)
Resources:
  S3BucketOriginal:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub 'original-${AWS::AccountId}'
      VersioningConfiguration:
        Status: Enabled
      ReplicationConfiguration:
        Role: !Sub 'arn:aws:iam::${AWS::AccountId}:role/OriginBucketBackupRole'
        Rules:
        - Id: BackUpRule
          Status: Enabled
          DeleteMarkerReplication:
             Status: Disabled
          Filter:       #追加
            Prefix: ""  #追加
          Priority: 0   #追加
          Destination:
            Bucket: !Sub 'arn:aws:s3:::backup-${AWS::AccountId}'
            EncryptionConfiguration:
              ReplicaKmsKeyID: !Sub 'arn:aws:kms:${AWS::Region}:${AWS::AccountId}:alias/BackupKey'
            Metrics: 
              Status: Enabled
              EventThreshold: 
                Minutes: 15
            ReplicationTime:
              Status: Enabled
              Time:
                Minutes: 15
          SourceSelectionCriteria: 
            SseKmsEncryptedObjects:
              Status: Enabled

좋은 웹페이지 즐겨찾기