この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
おはようございます、もきゅりんです。
先日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
以上です。 どなたかのお役に立ったら何よりです。