AWS CDKでS3バケットをデプロイする方法
| 項目 | バージョン |
|---|---|
| CDK | 2.28.0 |
AWS CDKでS3バケットをデプロイします。
import { Stack, StackProps, aws_s3 } 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-bucketxxx'});
}
}
これでデプロイします。
cdk deploy
S3バケットが作成されます。
cdk destroy
destroyすると、スタックは削除されますが、S3バケットが残ってしまいます。
以下オプションを追加する必要があります。
removalPolicy: RemovalPolicy.DESTROY
以下tsに1行追加します。
import { Stack, StackProps, aws_s3 } 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-bucketxxx',
removalPolicy: RemovalPolicy.DESTROY // 1行追加
});
}
}
このtsでデプロイしたS3バケットはcdk destroyで削除されます。
TestBucket (TestBucket000B00BC) The bucket you tried to delete is not empty
バケット内にオブジェクトが存在する場合は、一旦空にしてからバケット削除する必要があります。
cdk destroy時に空にするには、以下オプションを指定します。
autoDeleteObjects: true
以下tsに1行追加します。
import { Stack, StackProps, aws_s3 } 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-bucketxxx',
removalPolicy: RemovalPolicy.DESTROY,
autoDeleteObjects: true // 1行追加
});
}
}
これでcdk destroyで、S3バケットに何かオブジェクトが存在していても、S3バケットが削除されるようになります。
参考サイト
aws-cdk-lib.aws_s3 module · AWS CDK
Language | Package
interface LifecycleRule · AWS CDK
# interface LifecycleRule

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント