Serverless Framework で Lambda の Provisioned Concurrency を設定する

記事タイトルとURLをコピーする

はじめに

こんにちは。アプリケーションサービス部の柳田です。
Serverless Framework を使って、Lambda の Provisioned Concurrency を設定する機会があったため、設定手順と確認したことを記載します。
また、細かい説明は省略しますが「Serverless Framework」 と 「Lambda の Provisioned Concurrency」については以下の通りです。

  • Serverless Framework

    • サーバーレスアプリケーションの構成管理やデプロイができるツール
  • Lambda の Provisioned Concurrency

ざっくりまとめると、Serverless Framework というツールを使って、Lambda のコールドスタートを抑えるための設定方法を書いた記事です。

設定手順

1. serverless.yml に Provisioned Concurrency の設定

Serverless Framework の設定を記載する serverless.yml に provisionedConcurrency: (ウォームアップ台数) を追記するだけです。

設定例

Provisioned Concurrency を 2 にしてみました

service: aws-python-project

frameworkVersion: '2'


provider:
  name: aws
  runtime: python3.8
  lambdaHashingVersion: 20201221

functions:
  hello:
    handler: handler.hello
    provisionedConcurrency: 2

2. Serverless Framework でデプロイ

設定例の内容でデプロイ後に AWS マネジメントコンソールで設定を確認すると、期待通りに Provisioned Concurrency が 2 になっています。

f:id:swx-yanagita:20210819181746p:plain

Provisioned Concurrency を設定する際には、Lambda 関数の特定バージョン または エイリアスに対して設定する必要があります。
Serverless Framework でデプロイすると自動的に provisioned というエイリアスに対して、Provisioned Concurrency が設定されていることが分かります。少し調べてみましたが、serverless.yml の設定ではエイリアス名の指定はできなさそうでした。

また、Serverless Framework でデプロイを繰り返すと Lambda 関数のバージョンがどんどん上がっていくのですが、最新のバージョンに対してエイリアスが設定されるようになっていました。

まとめ

serverless.yml に1行追加するだけだったので楽ちんでした。Serverless Framework 便利。
なお、Lambda 自体は従量課金制ですが、Provisioned Concurrency は有効化してからの時間単位で料金が発生します。その点ご留意ください。
以下ページの料金例が分かりやすいです。

aws.amazon.com