この記事は公開されてから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 ではない)を指すエイリアスを作成しているのがポイントです。
lib/cdk-lambda-provisioned-concurrency-stack.ts
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 はとても便利な機能ですが、うっかり設定したまま放置してしまうと、なかなかにコストが嵩んでしまうので、消し忘れにご注意を。
今回は以上になります。最後まで読んで頂きありがとうございました!