あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

aws cdkでLambda(Node.js20)+S3環境を作ってみた


aws cdkをそろそろ本気で覚えたくなったのでとりあえず使ってみた。

やること

aws cdkでLambda(Node.js20)とS3バケットを作成。S3バケット内にtest.txtを配置する。

前提

 aws cdkの利用準備ができていること
 ※まだの場合、下記を参考に手順2まで実施する。
amegaeru.hatenablog.jp

実践!

1.cdk プロジェクト作成
1-1.PowerShellを開き下記を実行

> mkdir cdk-s3-lambda
> cd cdk-s3-lambda
> cdk init app --language typescript


2.コード作成
2-1.lib/cdk-s3-lambda-stack.tsを開き下記を入力

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as iam from 'aws-cdk-lib/aws-iam';
import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';
import * as path from 'path';

export class CdkS3LambdaStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // S3バケットの作成
    const bucket = new s3.Bucket(this, 'MyBucket', {
      removalPolicy: cdk.RemovalPolicy.DESTROY,
      autoDeleteObjects: true,
    });

    // アセットディレクトリの作成
    const asset = s3deploy.Source.asset(path.join(__dirname, 'assets'));

    // S3バケットにファイルを配置
    new s3deploy.BucketDeployment(this, 'DeployTestTxt', {
      sources: [asset],
      destinationBucket: bucket,
    });

    // Lambda関数の作成
    const lambdaFunction = new lambda.Function(this, 'MyFunction', {
      runtime: lambda.Runtime.NODEJS_20_X, // 修正箇所
      handler: 'index.handler',
      code: lambda.Code.fromAsset(path.join(__dirname, 'lambda')),
      environment: {
        BUCKET_NAME: bucket.bucketName,
      },
    });

    // Lambda関数にS3バケットへのアクセス権を付与
    bucket.grantRead(lambdaFunction);

    // Lambda関数のIAMロールにS3アクセス権限を追加
    lambdaFunction.addToRolePolicy(new iam.PolicyStatement({
      actions: ['s3:GetObject'],
      resources: [`${bucket.bucketArn}/*`],
    }));
  }
}


3.Lambda関数作成
3-1.lib/lambdaフォルダを作成
3-2.lib/lambdaフォルダ内にindex.jsファイルを作成
3-3.index.jsファイルを開き下記を入力

const AWS = require('aws-sdk');
const s3 = new AWS.S3();

exports.handler = async (event) => {
    const bucketName = process.env.BUCKET_NAME;
    const key = 'test.txt';

    try {
        const data = await s3.getObject({ Bucket: bucketName, Key: key }).promise();
        const fileContent = data.Body.toString('utf-8');
        console.log('File Content:', fileContent);
    } catch (error) {
        console.error('Error getting object from S3:', error);
    }
};


4.S3バケット内にindex.txtファイルを作成
4-1.lib/assetsフォルダを作成
4-2.lib/assetsフォルダー内にindex.txtファイルを作成

5.cdkデプロイ
5-1.PowerShellで下記を実行

> cdk bootstrap --profile <profile名>
PS C:\cdk-s3-lambda> cdk bootstrap --profile testvault
 ⏳  Bootstrapping environment aws://xxxxxxxxxxxx/ap-northeast-1...
Trusted accounts for deployment: (none)
Trusted accounts for lookup: (none)
Using default execution policy of 'arn:aws:iam::aws:policy/AdministratorAccess'. Pass '--cloudformation-execution-policies' to customize.
CDKToolkit: creating CloudFormation changeset...
CDKToolkit | 0/4 | 20:27:20 | UPDATE_IN_PROGRESS   | AWS::CloudFormation::Stack | CDKToolkit User Initiated
CDKToolkit | 0/4 | 20:27:24 | UPDATE_IN_PROGRESS   | AWS::SSM::Parameter     | CdkBootstrapVersion
CDKToolkit | 1/4 | 20:27:25 | UPDATE_COMPLETE      | AWS::SSM::Parameter     | CdkBootstrapVersion
CDKToolkit | 1/4 | 20:27:27 | UPDATE_IN_PROGRESS   | AWS::IAM::Role          | DeploymentActionRole 
CDKToolkit | 2/4 | 20:27:44 | UPDATE_COMPLETE      | AWS::IAM::Role          | DeploymentActionRole 
CDKToolkit | 3/4 | 20:27:45 | UPDATE_COMPLETE_CLEA | AWS::CloudFormation::Stack | CDKToolkit 
CDKToolkit | 4/4 | 20:27:47 | UPDATE_COMPLETE      | AWS::CloudFormation::Stack | CDKToolkit
 ✅  Environment aws://xxxxxxxxxxxx/ap-northeast-1 bootstrapped.

5-2.PowerShellで下記を実行

> cdk deploy --profile <profile名>
PS C:\cdk-s3-lambda> cdk deploy --profile testvault

✨  Synthesis time: 6.31s

CdkS3LambdaStack:  start: Building 3322b7049fb0ed2b7cbb644a2ada8d1116ff80c32dca89e6ada846b5de26f961:current_account-current_region
CdkS3LambdaStack:  success: Built 3322b7049fb0ed2b7cbb644a2ada8d1116ff80c32dca89e6ada846b5de26f961:current_account-current_region
CdkS3LambdaStack:  start: Building 2d56e153cac88d3e0c2f842e8e6f6783b8725bf91f95e0673b4725448a56e96d:current_account-current_region
CdkS3LambdaStack:  success: Built 2d56e153cac88d3e0c2f842e8e6f6783b8725bf91f95e0673b4725448a56e96d:current_account-current_region
CdkS3LambdaStack:  start: Publishing 3322b7049fb0ed2b7cbb644a2ada8d1116ff80c32dca89e6ada846b5de26f961:current_account-current_region
CdkS3LambdaStack:  start: Building 0a92ae4f0ff7188d013fc02ca4812b731af9e914f9ebaeffe18cb1c818b50d28:current_account-current_region
CdkS3LambdaStack:  success: Built 0a92ae4f0ff7188d013fc02ca4812b731af9e914f9ebaeffe18cb1c818b50d28:current_account-current_region
CdkS3LambdaStack:  start: Publishing 2d56e153cac88d3e0c2f842e8e6f6783b8725bf91f95e0673b4725448a56e96d:current_account-current_region
CdkS3LambdaStack:  start: Publishing 0a92ae4f0ff7188d013fc02ca4812b731af9e914f9ebaeffe18cb1c818b50d28:current_account-current_region
CdkS3LambdaStack:  start: Building d863e43b5651fd751e08d2380e4a998a67ca0774fffc4c236f6f2dee371d1419:current_account-current_region
CdkS3LambdaStack:  success: Built d863e43b5651fd751e08d2380e4a998a67ca0774fffc4c236f6f2dee371d1419:current_account-current_region
CdkS3LambdaStack:  start: Publishing d863e43b5651fd751e08d2380e4a998a67ca0774fffc4c236f6f2dee371d1419:current_account-current_region
CdkS3LambdaStack:  start: Building 8203404b07eea758f452b7933e4f308adcba25d7ef3330871a46c2c10bdb895c:current_account-current_region
CdkS3LambdaStack:  success: Built 8203404b07eea758f452b7933e4f308adcba25d7ef3330871a46c2c10bdb895c:current_account-current_region
CdkS3LambdaStack:  start: Publishing 8203404b07eea758f452b7933e4f308adcba25d7ef3330871a46c2c10bdb895c:current_account-current_region
CdkS3LambdaStack:  success: Published d863e43b5651fd751e08d2380e4a998a67ca0774fffc4c236f6f2dee371d1419:current_account-current_region
CdkS3LambdaStack:  success: Published 2d56e153cac88d3e0c2f842e8e6f6783b8725bf91f95e0673b4725448a56e96d:current_account-current_region
CdkS3LambdaStack:  success: Published 0a92ae4f0ff7188d013fc02ca4812b731af9e914f9ebaeffe18cb1c818b50d28:current_account-current_region
CdkS3LambdaStack:  success: Published 8203404b07eea758f452b7933e4f308adcba25d7ef3330871a46c2c10bdb895c:current_account-current_region
CdkS3LambdaStack:  success: Published 3322b7049fb0ed2b7cbb644a2ada8d1116ff80c32dca89e6ada846b5de26f961:current_account-current_region
This deployment will make potentially sensitive changes according to your current security approval level (--require-approval broadening).
Please confirm you intend to make the following modifications:

IAM Statement Changes
┌───┬───────────────────────────────┬────────┬───────────────────────────────┬────────────────────────────────┬───────────┐
│   │ Resource                      │ Effect │ Action                        │ Principal                      │ Condition │ 
├───┼───────────────────────────────┼────────┼───────────────────────────────┼────────────────────────────────┼───────────┤ 
│ + │ ${Custom::CDKBucketDeployment │ Allow  │ sts:AssumeRole                │ Service:lambda.amazonaws.com   │           │ 
│   │ 8693BB64968944B69AAFB0CC9EB87 │        │                               │                                │           │ 
│   │ 56C/ServiceRole.Arn}          │        │                               │                                │           │ 
├───┼───────────────────────────────┼────────┼───────────────────────────────┼────────────────────────────────┼───────────┤ 
│ + │ ${Custom::S3AutoDeleteObjects │ Allow  │ sts:AssumeRole                │ Service:lambda.amazonaws.com   │           │ 
│   │ CustomResourceProvider/Role.A │        │                               │                                │           │ 
│   │ rn}                           │        │                               │                                │           │ 
├───┼───────────────────────────────┼────────┼───────────────────────────────┼────────────────────────────────┼───────────┤ 
│ + │ ${MyBucket.Arn}               │ Allow  │ s3:DeleteObject*              │ AWS:${Custom::S3AutoDeleteObje │           │ 
│   │ ${MyBucket.Arn}/*             │        │ s3:GetBucket*                 │ ctsCustomResourceProvider/Role │           │ 
│   │                               │        │ s3:List*                      │ .Arn}                          │           │ 
│   │                               │        │ s3:PutBucketPolicy            │                                │           │ 
│ + │ ${MyBucket.Arn}               │ Allow  │ s3:Abort*                     │ AWS:${Custom::CDKBucketDeploym │           │ 
│   │ ${MyBucket.Arn}/*             │        │ s3:DeleteObject*              │ ent8693BB64968944B69AAFB0CC9EB │           │ 
│   │                               │        │ s3:GetBucket*                 │ 8756C/ServiceRole}             │           │ 
│   │                               │        │ s3:GetObject*                 │                                │           │ 
│   │                               │        │ s3:List*                      │                                │           │ 
│   │                               │        │ s3:PutObject                  │                                │           │ 
│   │                               │        │ s3:PutObjectLegalHold         │                                │           │ 
│   │                               │        │ s3:PutObjectRetention         │                                │           │ 
│   │                               │        │ s3:PutObjectTagging           │                                │           │ 
│   │                               │        │ s3:PutObjectVersionTagging    │                                │           │ 
│ + │ ${MyBucket.Arn}               │ Allow  │ s3:GetBucket*                 │ AWS:${MyFunction/ServiceRole}  │           │ 
│   │ ${MyBucket.Arn}/*             │        │ s3:GetObject*                 │                                │           │ 
│   │                               │        │ s3:List*                      │                                │           │ 
├───┼───────────────────────────────┼────────┼───────────────────────────────┼────────────────────────────────┼───────────┤ 
│ + │ ${MyBucket.Arn}/*             │ Allow  │ s3:GetObject                  │ AWS:${MyFunction/ServiceRole}  │           │ 
├───┼───────────────────────────────┼────────┼───────────────────────────────┼────────────────────────────────┼───────────┤ 
│ + │ ${MyFunction/ServiceRole.Arn} │ Allow  │ sts:AssumeRole                │ Service:lambda.amazonaws.com   │           │ 
├───┼───────────────────────────────┼────────┼───────────────────────────────┼────────────────────────────────┼───────────┤ 
│ + │ arn:${AWS::Partition}:s3:::{" │ Allow  │ s3:GetBucket*                 │ AWS:${Custom::CDKBucketDeploym │           │ 
│   │ Fn::Sub":"cdk-hnb659fds-asset │        │ s3:GetObject*                 │ ent8693BB64968944B69AAFB0CC9EB │           │ 
│   │ s-${AWS::AccountId}-${AWS::Re │        │ s3:List*                      │ 8756C/ServiceRole}             │           │ 
│   │ gion}"}                       │        │                               │                                │           │ 
│   │ arn:${AWS::Partition}:s3:::{" │        │                               │                                │           │ 
│   │ Fn::Sub":"cdk-hnb659fds-asset │        │                               │                                │           │ 
│   │ s-${AWS::AccountId}-${AWS::Re │        │                               │                                │           │ 
│   │ gion}"}/*                     │        │                               │                                │           │ 
└───┴───────────────────────────────┴────────┴───────────────────────────────┴────────────────────────────────┴───────────┘ 
IAM Policy Changes
┌───┬──────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────┐ 
│   │ Resource                                                 │ Managed Policy ARN                                       │ 
├───┼──────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────┤ 
│ + │ ${Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB │ arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLa │ 
│   │ 8756C/ServiceRole}                                       │ mbdaBasicExecutionRole                                   │ 
├───┼──────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────┤ 
│ + │ ${Custom::S3AutoDeleteObjectsCustomResourceProvider/Role │ {"Fn::Sub":"arn:${AWS::Partition}:iam::aws:policy/servic │ 
│   │ }                                                        │ e-role/AWSLambdaBasicExecutionRole"}                     │ 
├───┼──────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────┤ 
│ + │ ${MyFunction/ServiceRole}                                │ arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLa │ 
│   │                                                          │ mbdaBasicExecutionRole                                   │ 
└───┴──────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────┘ 
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

Do you wish to deploy these changes (y/n)? y 

CdkS3LambdaStack:  start: Building d7c71b0feef6812e8923395620bb28e50c0d5413572c070f5fc30f549a5ef3ec:current_account-current_region
CdkS3LambdaStack:  success: Built d7c71b0feef6812e8923395620bb28e50c0d5413572c070f5fc30f549a5ef3ec:current_account-current_region
CdkS3LambdaStack:  start: Publishing d7c71b0feef6812e8923395620bb28e50c0d5413572c070f5fc30f549a5ef3ec:current_account-current_region
CdkS3LambdaStack:  success: Published d7c71b0feef6812e8923395620bb28e50c0d5413572c070f5fc30f549a5ef3ec:current_account-current_region
CdkS3LambdaStack: deploying... [1/1]
CdkS3LambdaStack: creating CloudFormation changeset...
CdkS3LambdaStack |  0/15 | 20:34:06 | REVIEW_IN_PROGRESS   | AWS::CloudFormation::Stack  | CdkS3LambdaStack User Initiated
CdkS3LambdaStack |  0/15 | 20:34:13 | CREATE_IN_PROGRESS   | AWS::CloudFormation::Stack  | CdkS3LambdaStack User Initiated  
CdkS3LambdaStack |  0/15 | 20:34:17 | CREATE_IN_PROGRESS   | AWS::IAM::Role              | MyFunction/ServiceRole (MyFunctionServiceRole3C357FF2)
CdkS3LambdaStack |  0/15 | 20:34:17 | CREATE_IN_PROGRESS   | AWS::IAM::Role              | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265)       
CdkS3LambdaStack |  0/15 | 20:34:17 | CREATE_IN_PROGRESS   | AWS::S3::Bucket             | MyBucket (MyBucketF68F3FF0)      
CdkS3LambdaStack |  0/15 | 20:34:17 | CREATE_IN_PROGRESS   | AWS::CDK::Metadata          | CDKMetadata/Default (CDKMetadata)

CdkS3LambdaStack |  0/15 | 20:34:17 | CREATE_IN_PROGRESS   | AWS::Lambda::LayerVersion   | DeployTestTxt/AwsCliLayer (DeployTestTxtAwsCliLayerEBD84BF7)
CdkS3LambdaStack |  0/15 | 20:34:17 | CREATE_IN_PROGRESS   | AWS::IAM::Role              | Custom::S3AutoDeleteObjectsCustomResourceProvider/Role (CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092)
CdkS3LambdaStack |  0/15 | 20:34:18 | CREATE_IN_PROGRESS   | AWS::CDK::Metadata          | CDKMetadata/Default (CDKMetadata)
 Resource creation Initiated
CdkS3LambdaStack |  0/15 | 20:34:18 | CREATE_IN_PROGRESS   | AWS::S3::Bucket             | MyBucket (MyBucketF68F3FF0) Resource creation Initiated
CdkS3LambdaStack |  0/15 | 20:34:18 | CREATE_IN_PROGRESS   | AWS::IAM::Role              | MyFunction/ServiceRole (MyFunctionServiceRole3C357FF2) Resource creation Initiated
CdkS3LambdaStack |  0/15 | 20:34:18 | CREATE_IN_PROGRESS   | AWS::IAM::Role              | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265) Resource creation Initiated
CdkS3LambdaStack |  0/15 | 20:34:18 | CREATE_IN_PROGRESS   | AWS::IAM::Role              | Custom::S3AutoDeleteObjectsCustomResourceProvider/Role (CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092) Resource creation Initiated
CdkS3LambdaStack |  1/15 | 20:34:19 | CREATE_COMPLETE      | AWS::CDK::Metadata          | CDKMetadata/Default (CDKMetadata)

CdkS3LambdaStack |  1/15 | 20:34:24 | CREATE_IN_PROGRESS   | AWS::Lambda::LayerVersion   | DeployTestTxt/AwsCliLayer (DeployTestTxtAwsCliLayerEBD84BF7) Resource creation Initiated
CdkS3LambdaStack |  2/15 | 20:34:24 | CREATE_COMPLETE      | AWS::Lambda::LayerVersion   | DeployTestTxt/AwsCliLayer (DeployTestTxtAwsCliLayerEBD84BF7)
CdkS3LambdaStack |  3/15 | 20:34:32 | CREATE_COMPLETE      | AWS::S3::Bucket             | MyBucket (MyBucketF68F3FF0) 
CdkS3LambdaStack |  4/15 | 20:34:35 | CREATE_COMPLETE      | AWS::IAM::Role              | MyFunction/ServiceRole (MyFunctionServiceRole3C357FF2)
CdkS3LambdaStack |  5/15 | 20:34:35 | CREATE_COMPLETE      | AWS::IAM::Role              | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265)       
CdkS3LambdaStack |  6/15 | 20:34:35 | CREATE_COMPLETE      | AWS::IAM::Role              | Custom::S3AutoDeleteObjectsCustomResourceProvider/Role (CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092)
CdkS3LambdaStack |  6/15 | 20:34:36 | CREATE_IN_PROGRESS   | AWS::IAM::Policy            | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF)
CdkS3LambdaStack |  6/15 | 20:34:36 | CREATE_IN_PROGRESS   | AWS::IAM::Policy            | MyFunction/ServiceRole/DefaultPolicy (MyFunctionServiceRoleDefaultPolicyB705ABD4)
CdkS3LambdaStack |  6/15 | 20:34:36 | CREATE_IN_PROGRESS   | AWS::Lambda::Function       | Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler (CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F)
CdkS3LambdaStack |  6/15 | 20:34:37 | CREATE_IN_PROGRESS   | AWS::S3::BucketPolicy       | MyBucket/Policy (MyBucketPolicyE7FBAC7B)
CdkS3LambdaStack |  6/15 | 20:34:37 | CREATE_IN_PROGRESS   | AWS::Lambda::Function       | Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler (CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F) Resource creation Initiated       
CdkS3LambdaStack |  6/15 | 20:34:38 | CREATE_IN_PROGRESS   | AWS::IAM::Policy            | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF) Resource creation Initiated
CdkS3LambdaStack |  6/15 | 20:34:38 | CREATE_IN_PROGRESS   | AWS::IAM::Policy            | MyFunction/ServiceRole/DefaultPolicy (MyFunctionServiceRoleDefaultPolicyB705ABD4) Resource creation Initiated
CdkS3LambdaStack |  6/15 | 20:34:38 | CREATE_IN_PROGRESS   | AWS::S3::BucketPolicy       | MyBucket/Policy (MyBucketPolicyE7FBAC7B) Resource creation Initiated
CdkS3LambdaStack |  6/15 | 20:34:38 | CREATE_IN_PROGRESS   | AWS::Lambda::Function       | Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler (CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F) Eventual consistency check initiated
CdkS3LambdaStack |  7/15 | 20:34:39 | CREATE_COMPLETE      | AWS::S3::BucketPolicy       | MyBucket/Policy (MyBucketPolicyE7FBAC7B)
CdkS3LambdaStack |  8/15 | 20:34:43 | CREATE_COMPLETE      | AWS::Lambda::Function       | Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler (CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F)
CdkS3LambdaStack |  8/15 | 20:34:44 | CREATE_IN_PROGRESS   | Custom::S3AutoDeleteObjects | MyBucket/AutoDeleteObjectsCustomResource/Default (MyBucketAutoDeleteObjectsCustomResource2C28D565)
CdkS3LambdaStack |  8/15 | 20:34:46 | CREATE_IN_PROGRESS   | Custom::S3AutoDeleteObjects | MyBucket/AutoDeleteObjectsCustomResource/Default (MyBucketAutoDeleteObjectsCustomResource2C28D565) Resource creation Initiated
CdkS3LambdaStack |  9/15 | 20:34:46 | CREATE_COMPLETE      | Custom::S3AutoDeleteObjects | MyBucket/AutoDeleteObjectsCustomResource/Default (MyBucketAutoDeleteObjectsCustomResource2C28D565)
CdkS3LambdaStack | 10/15 | 20:34:53 | CREATE_COMPLETE      | AWS::IAM::Policy            | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF)
CdkS3LambdaStack | 11/15 | 20:34:53 | CREATE_COMPLETE      | AWS::IAM::Policy            | MyFunction/ServiceRole/DefaultPolicy (MyFunctionServiceRoleDefaultPolicyB705ABD4)
CdkS3LambdaStack | 11/15 | 20:34:55 | CREATE_IN_PROGRESS   | AWS::Lambda::Function       | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536)
CdkS3LambdaStack | 11/15 | 20:34:55 | CREATE_IN_PROGRESS   | AWS::Lambda::Function       | MyFunction (MyFunction3BAA72D1)  
CdkS3LambdaStack | 11/15 | 20:34:56 | CREATE_IN_PROGRESS   | AWS::Lambda::Function       | MyFunction (MyFunction3BAA72D1) Resource creation Initiated
CdkS3LambdaStack | 11/15 | 20:34:57 | CREATE_IN_PROGRESS   | AWS::Lambda::Function       | MyFunction (MyFunction3BAA72D1) Eventual consistency check initiated
CdkS3LambdaStack | 11/15 | 20:35:00 | CREATE_IN_PROGRESS   | AWS::Lambda::Function       | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536) Resource creation Initiated  
CdkS3LambdaStack | 11/15 | 20:35:01 | CREATE_IN_PROGRESS   | AWS::Lambda::Function       | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536) Eventual consistency check initiated
CdkS3LambdaStack | 12/15 | 20:35:02 | CREATE_COMPLETE      | AWS::Lambda::Function       | MyFunction (MyFunction3BAA72D1)  
CdkS3LambdaStack | 13/15 | 20:35:06 | CREATE_COMPLETE      | AWS::Lambda::Function       | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536)
CdkS3LambdaStack | 13/15 | 20:35:07 | CREATE_IN_PROGRESS   | Custom::CDKBucketDeployment | DeployTestTxt/CustomResource/Default (DeployTestTxtCustomResource5080A8AF)
13/15 Currently in progress: CdkS3LambdaStack, DeployTestTxtCustomResource5080A8AF
CdkS3LambdaStack | 13/15 | 20:35:53 | CREATE_IN_PROGRESS   | Custom::CDKBucketDeployment | DeployTestTxt/CustomResource/Default (DeployTestTxtCustomResource5080A8AF) Resource creation Initiated
CdkS3LambdaStack | 14/15 | 20:35:53 | CREATE_COMPLETE      | Custom::CDKBucketDeployment | DeployTestTxt/CustomResource/Default (DeployTestTxtCustomResource5080A8AF)
CdkS3LambdaStack | 15/15 | 20:35:54 | CREATE_COMPLETE      | AWS::CloudFormation::Stack  | CdkS3LambdaStack 

 ✅  CdkS3LambdaStack

✨  Deployment time: 116.88s

Stack ARN:
arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/CdkS3LambdaStack/786f4ca0-48e7-11ef-afc8-0eebc5a3269d

✨  Total time: 122.59s


6.作成確認
6-1.PowerShellで下記を実行

> aws s3 ls --profile <profile名>
PS C:\cdk-s3-lambda> aws s3 ls --profile testvault
2024-05-19 13:44:10 cdk-hnb659fds-assets-xxxxxxxxxxxx-ap-northeast-1

6-2.PowerShellで下記を実行

> aws lambda list-functions --profile <profile名>
PS C:\cdk-s3-lambda> aws lambda list-functions --profile testvault
{
    "Functions": [
        {
            "FunctionName": "CdkS3LambdaStack-MyFunction3BAA72D1-V4UWolFI00KO",
・・・・


7.お掃除
7-1.Powershellで下記を実行

> cdk destroy --profile <Profile名>
PS C:\cdk-s3-lambda> cdk destroy --profile testvault
Are you sure you want to delete: CdkS3LambdaStack (y/n)? y
CdkS3LambdaStack: destroying... [1/1]
CdkS3LambdaStack |   0 | 21:07:39 | DELETE_IN_PROGRESS   | AWS::Lambda::Function       | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536)
CdkS3LambdaStack |   1 | 21:07:40 | DELETE_COMPLETE      | AWS::Lambda::Function       | MyFunction (MyFunction3BAA72D1)    
CdkS3LambdaStack |   1 | 21:07:34 | DELETE_IN_PROGRESS   | AWS::CloudFormation::Stack  | CdkS3LambdaStack User Initiated    
CdkS3LambdaStack |   1 | 21:07:37 | DELETE_IN_PROGRESS   | AWS::CDK::Metadata          | CDKMetadata/Default (CDKMetadata)  
CdkS3LambdaStack |   1 | 21:07:37 | DELETE_IN_PROGRESS   | Custom::S3AutoDeleteObjects | MyBucket/AutoDeleteObjectsCustomResource/Default (MyBucketAutoDeleteObjectsCustomResource2C28D565)
CdkS3LambdaStack |   1 | 21:07:37 | DELETE_IN_PROGRESS   | Custom::CDKBucketDeployment | DeployTestTxt/CustomResource/Default (DeployTestTxtCustomResource5080A8AF)
CdkS3LambdaStack |   1 | 21:07:37 | DELETE_IN_PROGRESS   | AWS::Lambda::Function       | MyFunction (MyFunction3BAA72D1)    
CdkS3LambdaStack |   2 | 21:07:38 | DELETE_COMPLETE      | AWS::CDK::Metadata          | CDKMetadata/Default (CDKMetadata)  
CdkS3LambdaStack |   3 | 21:07:39 | DELETE_COMPLETE      | Custom::CDKBucketDeployment | DeployTestTxt/CustomResource/Default (DeployTestTxtCustomResource5080A8AF)
CdkS3LambdaStack |   3 | 21:07:41 | DELETE_IN_PROGRESS   | AWS::IAM::Policy            | MyFunction/ServiceRole/DefaultPolicy (MyFunctionServiceRoleDefaultPolicyB705ABD4)
CdkS3LambdaStack |   4 | 21:07:41 | DELETE_COMPLETE      | Custom::S3AutoDeleteObjects | MyBucket/AutoDeleteObjectsCustomResource/Default (MyBucketAutoDeleteObjectsCustomResource2C28D565)
CdkS3LambdaStack |   4 | 21:07:41 | DELETE_IN_PROGRESS   | AWS::S3::BucketPolicy       | MyBucket/Policy (MyBucketPolicyE7FBAC7B)
CdkS3LambdaStack |   4 | 21:07:41 | DELETE_IN_PROGRESS   | AWS::Lambda::Function       | Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler (CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F)
CdkS3LambdaStack |   5 | 21:07:42 | DELETE_COMPLETE      | AWS::IAM::Policy            | MyFunction/ServiceRole/DefaultPolicy (MyFunctionServiceRoleDefaultPolicyB705ABD4)
CdkS3LambdaStack |   5 | 21:07:42 | DELETE_IN_PROGRESS   | AWS::IAM::Role              | MyFunction/ServiceRole (MyFunctionServiceRole3C357FF2)
CdkS3LambdaStack |   6 | 21:07:43 | DELETE_COMPLETE      | AWS::S3::BucketPolicy       | MyBucket/Policy (MyBucketPolicyE7FBAC7B)
CdkS3LambdaStack |   7 | 21:07:43 | DELETE_COMPLETE      | AWS::Lambda::Function       | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536)
CdkS3LambdaStack |   7 | 21:07:43 | DELETE_IN_PROGRESS   | AWS::IAM::Policy            | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF)
CdkS3LambdaStack |   7 | 21:07:43 | DELETE_IN_PROGRESS   | AWS::Lambda::LayerVersion   | DeployTestTxt/AwsCliLayer (DeployTestTxtAwsCliLayerEBD84BF7)
CdkS3LambdaStack |   8 | 21:07:44 | DELETE_COMPLETE      | AWS::IAM::Policy            | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF)
CdkS3LambdaStack |   8 | 21:07:45 | DELETE_IN_PROGRESS   | AWS::IAM::Role              | Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole (CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265)
CdkS3LambdaStack |   9 | 21:07:45 | DELETE_COMPLETE      | AWS::Lambda::Function       | Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler (CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F)
CdkS3LambdaStack |   9 | 21:07:46 | DELETE_IN_PROGRESS   | AWS::IAM::Role              | Custom::S3AutoDeleteObjectsCustomResourceProvider/Role (CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092)
CdkS3LambdaStack |   9 | 21:07:46 | DELETE_IN_PROGRESS   | AWS::S3::Bucket             | MyBucket (MyBucketF68F3FF0)        
CdkS3LambdaStack |  10 | 21:07:47 | DELETE_COMPLETE      | AWS::S3::Bucket             | MyBucket (MyBucketF68F3FF0)        

 ✅  CdkS3LambdaStack: destroyed



感想

TypeScriptから勉強しないとよくわからないな、、、( ̄д ̄|||;