AWS CDKでS3バケットにライフサイクルを設定してデプロイする方法
項目 | バージョン |
---|---|
CDK | 2.28.0 |
AWS CDKでS3バケットデプロイ時にライフサイクルを設定してデプロイします。
import { Stack, StackProps, aws_s3, Duration, RemovalPolicy } from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class Sample001Stack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); const bucket = new aws_s3.Bucket(this, 'TestBucket', { bucketName: 'test-bucket2023x', removalPolicy: RemovalPolicy.DESTROY, autoDeleteObjects: true, versioned: true, lifecycleRules: [ { id: 'lifecycle-test', expiration: Duration.days(1), noncurrentVersionExpiration: Duration.days(2) } ] }); } }
これでデプロイします。
cdk deploy
S3バケットが作成され、ライフサイクルも設定されています。
既存S3バケットにライフサイクルを設定する
fromBucketNameかfromBucketArnから既存S3を参照することができます。
const bucketX: aws_s3.IBucket = aws_s3.Bucket.fromBucketName( this, 'TestBucketX', 'test-bucketxxx' ) const bucketY: aws_s3.IBucket = aws_s3.Bucket.fromBucketArn( this, 'TestBucketY', 'arn:aws:s3:::test-bucketyyy' )
戻り値のaws_s3.IBucketにはライフサイクルを設定するメソッドがないようで、既存S3にライフサイクルを設定するのはできないっぽいです。
grantWrite,grantReadメソッド
既存S3バケットを参照したIBucketにはgrantWrite,grantReadメソッドなどがあります。
grantWriteメソッドを使うと、以下のポリシーがアタッチされます。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:PutObject", "s3:PutObjectLegalHold", "s3:PutObjectRetention", "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::test-bucketxxx", "arn:aws:s3:::test-bucketxxx/*" ], "Effect": "Allow" } ] }
grantReadメソッドを使うと、以下のポリシーがアタッチされます。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucket*", "s3:GetObject*", "s3:List*" ], "Resource": [ "arn:aws:s3:::test-bucketxxx", "arn:aws:s3:::test-bucketxxx/*" ], "Effect": "Allow" } ] }
参考サイト
aws-cdk-lib.aws_s3 module · AWS CDK
Language | Package
interface LifecycleRule · AWS CDK
# interface LifecycleRule
interface IBucket · AWS CDK
# interface IBucket
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント