
【AWS CDK】Lambda の Provisioned Concurrency を設定する
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
テントの中から失礼します、CX事業本部のてんとタカハシです!
今回は、AWS CDK で Lambda の Provisioned Concurrency を設定してみました。
Provisioned Concurrency の概要については下記の記事をご参照ください。
ソースコードは下記のリポジトリにも置いてあります。
GitHub - iam326/cdk-lambda-provisioned-concurrency
環境
環境は下記の通りです。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H2 $ cdk --version 1.86.0 (build a10cfcf) $ yarn --version 1.22.10 $ node --version v14.7.0
実装
実装は下記の通りです。
Provisioned Concurrency を設定するには、エイリアスかバージョンを指定する必要があるため、ここでは最新のバージョン($LATEST ではない)を指すエイリアスを作成しているのがポイントです。
import * as cdk from '@aws-cdk/core';
import * as lambda from '@aws-cdk/aws-lambda';
export class CdkLambdaProvisionedConcurrencyStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    const func = new lambda.Function(this, 'SampleLambdaFunction', {
      code: lambda.Code.fromAsset('dist/hello-world'),
      functionName: 'SampleLambdaFunction',
      handler: 'index.handler',
      runtime: lambda.Runtime.NODEJS_12_X,
      currentVersionOptions: {
        removalPolicy: cdk.RemovalPolicy.RETAIN,
      },
      // 予約された同時実行数の設定
      reservedConcurrentExecutions: 100,
    });
    // 最新のバージョンを指すエイリアスを作成してから、
    func.currentVersion.addAlias('Alias', {
      // プロビジョニングされた同時実行数の設定を行う
      provisionedConcurrentExecutions: 5,
    });
  }
}
デプロイ
デプロイを開始すると、Provisioned Concurrency のステータスが「準備完了」になるまで、スタックの作成は終わりません。

スタックの作成中に Lambda の画面を確認すると、ステータスが「進行中」の設定が存在していることを確認できます。

スタックの作成が終了すると、

ステータスが「準備完了」に変わっていることを確認できます。

おわりに
Lambda の Provisioned Concurrency はとても便利な機能ですが、うっかり設定したまま放置してしまうと、なかなかにコストが嵩んでしまうので、消し忘れにご注意を。
今回は以上になります。最後まで読んで頂きありがとうございました!













