[小ネタ]S3のライフサイクル設定例をCloudFormationでやってみる
おはようございます、もきゅりんです。
先日CloudFormationテンプレートでS3バケットのライフサイクルを設定する機会があったのですが、簡単すぎるためかあまり記事が見られなかったので、ササッとコピペでもしたいとき用にブログとして残しておきます。
今回は、AWSドキュメントのライフサイクル設定の例を抜粋してテンプレートを作りました。
例1: フィルタを指定する
このライフサイクル設定ルールでは、フィルタはキープレフィックスが tax/ のオブジェクトのサブセットと、指定したキーと値の 2 つのタグを含むオブジェクトに、ライフサイクルルールを適用します。 (※ 包括した例で対応しています。)
このルールは、Amazon S3 に以下のことを命じる 2 つのアクションを指定します。
- 作成から 365 日 (1 年) 後にオブジェクトを GLACIER ストレージクラスに移行する。
- 作成から 3,650 日 (10 年) 後にオブジェクトを削除する (Expiration アクション)。
AWSTemplateFormatVersion: 2010-09-09 Description: Create S3 for LifeCycle # ------------------------------------------------------------# # Parameters # ------------------------------------------------------------# Parameters: NameTagPrefix: Type: String Default: ProjectA Description: The Value of Name Tag BucketName: Type: String Description: A name for the bucket. # ------------------------------------------------------------# # Resources # ------------------------------------------------------------# Resources: S3LifeCycleBacket: Type: 'AWS::S3::Bucket' Properties: BucketName: !Ref BucketName BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: AES256 Tags: - Key: Name Value: !Ref NameTagPrefix - Key: key1 Value: value1 - Key: key2 Value: value2 LifecycleConfiguration: Rules: - Id: !Sub ${NameTagPrefix}-LifeCycle-Rule Status: Enabled Prefix: tax/ TagFilters: - Key: key1 Value: value1 - Key: key2 Value: value2 ExpirationInDays: 3650 Transitions: - StorageClass: GLACIER TransitionInDays: 365 # ------------------------------------------------------------# # Outputs # ------------------------------------------------------------# Outputs: S3LifeCycleBacket: Description: S3 Backet Name Value: !Ref S3LifeCycleBacket Export: Name: !Sub ${NameTagPrefix}-S3Bucket
例3: オブジェクトの有効期間全体にわたってストレージクラスの層を下げる
次のライフサイクル設定では、キー名プレフィックス logs/ が付いたオブジェクトに適用されるルールを指定します。このルールは、次のアクションを指定します。
2 つの移行アクション:
- 作成されてから 30 日後にオブジェクトを STANDARD_IA ストレージクラスに移行します。
- 作成されてから 90 日後にオブジェクトを GLACIER ストレージクラスに移行します。
- 作成されてから 1 年後にオブジェクトを削除するよう Amazon S3 に指示する 1 つの有効期間アクション。
AWSTemplateFormatVersion: 2010-09-09 Description: Create S3 for LifeCycle # ------------------------------------------------------------# # Parameters # ------------------------------------------------------------# Parameters: NameTagPrefix: Type: String Default: ProjectB Description: The Value of Name Tag BucketName: Type: String Description: A name for the bucket. # ------------------------------------------------------------# # Resources # ------------------------------------------------------------# Resources: S3LifeCycleBacket: Type: 'AWS::S3::Bucket' Properties: BucketName: !Ref BucketName BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: AES256 Tags: - Key: Name Value: !Ref NameTagPrefix LifecycleConfiguration: Rules: - Id: !Sub ${NameTagPrefix}-LifeCycle-Rule Status: Enabled Prefix: logs/ ExpirationInDays: 365 Transitions: - StorageClass: STANDARD_IA TransitionInDays: 30 - StorageClass: GLACIER TransitionInDays: 90 # ------------------------------------------------------------# # Outputs # ------------------------------------------------------------# Outputs: S3LifeCycleBacket: Description: S3 Backet Name Value: !Ref S3LifeCycleBacket Export: Name: !Sub ${NameTagPrefix}-S3Bucket
例 4: 複数のルールを指定する
次のライフサイクル設定には 2 つのルールがあります。
- ルール 1 は、キー名プレフィックス classA/ が付いたオブジェクトに適用されます。作成されてから 1 年後にオブジェクトを GLACIER ストレージクラスに移行し、作成されてから 10 年後にそれらのオブジェクトを期限切れにするよう、Amazon S3 に指示します。
-
ルール 2 は、キー名プレフィックス classB/ が付いたオブジェクトに適用されます。作成されてから 90 日後にオブジェクトを STANDARD_IA ストレージクラスに移行し、作成されてから 1 年後に削除するよう Amazon S3 に指示します。
AWSTemplateFormatVersion: 2010-09-09 Description: Create S3 for LifeCycle # ------------------------------------------------------------# # Parameters # ------------------------------------------------------------# Parameters: NameTagPrefix: Type: String Default: ProjectC Description: The Value of Name Tag BucketName: Type: String Description: A name for the bucket. # ------------------------------------------------------------# # Resources # ------------------------------------------------------------# Resources: S3LifeCycleBacket: Type: 'AWS::S3::Bucket' Properties: BucketName: !Ref BucketName BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: AES256 Tags: - Key: Name Value: !Ref NameTagPrefix LifecycleConfiguration: Rules: - Id: !Sub ${NameTagPrefix}-LifeCycle-Rule1 Status: Enabled Prefix: classA/ ExpirationInDays: 3650 Transitions: - StorageClass: GLACIER TransitionInDays: 365 - Id: !Sub ${NameTagPrefix}-LifeCycle-Rule2 Status: Enabled Prefix: classB/ ExpirationInDays: 365 Transitions: - StorageClass: STANDARD_IA TransitionInDays: 90 # ------------------------------------------------------------# # Outputs # ------------------------------------------------------------# Outputs: S3LifeCycleBacket: Description: S3 Backet Name Value: !Ref S3LifeCycleBacket Export: Name: !Sub ${NameTagPrefix}-S3Bucket
以上です。 どなたかのお役に立ったら何よりです。