AWS CDKで作成するLambda(node.js)とロールをデプロイする方法

AWS CDKで作成するLambda(node.js)とロールをデプロイする方法

前提

CDKプロジェクト作成は「AWS CDKでLambda(node.js)をデプロイする」参照してください。

Lambdaデプロイと同時にロールもデプロイする

デフォルトだと、適当な名前のロールが作成されて、AWSLambdaBasicExecutionRoleしか割り当てられていません。「SecretsManagerReadWrite」も割り当ててみます。

lib配下のts修正

tsファイルを修正します。

import { Stack, StackProps, aws_lambda_nodejs as lambda, Duration } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { Runtime } from 'aws-cdk-lib/aws-lambda';
import * as iam from 'aws-cdk-lib/aws-iam';

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

    const executionLambdaRole = new iam.Role(
      this,
      'SampleLambdaExecutionRole',
      {
        roleName: 'sample-lambda-execution-role',
        assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
        managedPolicies: [
          iam.ManagedPolicy.fromAwsManagedPolicyName(
            'service-role/AWSLambdaBasicExecutionRole'
          ),
          iam.ManagedPolicy.fromAwsManagedPolicyName(
            'SecretsManagerReadWrite'
          )
        ],
      }
    );

    const index = new lambda.NodejsFunction(this, 'IndexHandler', {
      entry: "lambda/index.js",
      runtime: Runtime.NODEJS_16_X,
      timeout: Duration.minutes(10),
      bundling: {
        nodeModules: ['@aws-sdk/client-secrets-manager']
      },
      role: executionLambdaRole
    })

  }
}

これでデプロイします。

cdk deploy

ロール名が指定した名前で作成されています。

AWS CDKで作成するLambda(node.js)とロールをデプロイする方法

ロールです。

AWS CDKで作成するLambda(node.js)とロールをデプロイする方法

参考サイト

aws-cdk-lib.aws_iam module · AWS CDK
Language | Package

コメント

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