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(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント