空のS3バケットを作成する
s3_default.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| AWSTemplateFormatVersion: '2010-09-09' Description: S3 Normal Bucket
Parameters: S3BucketName: Description: Type of this BacketName. Type: String
Resources:
S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Sub ${S3BucketName} AccessControl: Private PublicAccessBlockConfiguration: BlockPublicAcls: True BlockPublicPolicy: True IgnorePublicAcls: True RestrictPublicBuckets: True
Outputs: S3BucketName: Value: !Ref S3Bucket
|
parameters.json
指定するバケット名はAWSで一意の物にする必要があるため、よくあるキーワードなどはエラーになる。ドメイン名などを付与して一意な名前にする。
1 2 3 4 5 6
| [ { "ParameterKey": "S3BucketName", "ParameterValue": "testxxxxxxxxxx" } ]
|
デフォルトのバケットを作成する
Cloudformationでバケットを作成する。
1 2 3 4 5 6
| $ aws cloudformation create-stack --stack-name tutorial-s3-bucket --template-body "file://./s3_default.yml" --parameters "file://./parameters.json" { "StackId": "arn:aws:cloudformation:ap-northeast-1:XXXXXXXXX:stack/tutorial-s3-bucket/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" } $ aws s3 ls 2019-11-26 19:30:00 testxxxxxxxxxx
|
AWSコンソールで作成された状態を確認。
S3のライフサイクル設定で有効期間を設定する
s3_expiration.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| AWSTemplateFormatVersion: '2010-09-09' Description: S3Bcuket with expiration
Parameters: S3BucketName: Description: Type of this BacketName. Type: String
Resources:
S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Sub ${S3BucketName} AccessControl: Private PublicAccessBlockConfiguration: BlockPublicAcls: True BlockPublicPolicy: True IgnorePublicAcls: True RestrictPublicBuckets: True LifecycleConfiguration: Rules: - Id: LifeCycleRule Status: Enabled ExpirationInDays: 365
Outputs: S3BucketName: Value: !Ref S3Bucket
|
ライフサイクル設定を追加してスタック更新
1 2 3 4
| $ aws cloudformation update-stack --stack-name tutorial-s3-bucket --template-body "file://./s3_expiration.yml" --parameters "file://./parameters.json" { "StackId": "arn:aws:cloudformation:ap-northeast-1:XXXXXXXXX:stack/tutorial-s3-bucket/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
|
AWSコンソール上で確認すると、ライフサイクルルールが作成されている。