AWS CDKでS3バケットをデプロイする方法

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バケットが作成されます。

AWS CDKで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

コメント

タイトルとURLをコピーしました