Lambda 関数のタイムアウトを設定する
Lambda は、コードを一定時間実行してからタイムアウトします。タイムアウトとは、Lambda 関数がタイムアウトするまでの最大実行時間です。この設定のデフォルト値は 3 秒ですが、最大値の 900 秒 (15 分) まで 1 秒単位で調整できます。
このページでは、Lambda 関数のタイムアウト設定を更新する方法とタイミングについて説明します。
Lambda 関数の適切なタイムアウト値を決定する
タイムアウト値が関数の平均期間に近い場合、関数が予期せずタイムアウトするリスクが高くなります。関数の期間は、データ転送と処理の量、および関数が相互作用するサービスのレイテンシーによって異なる場合があります。タイムアウトの一般的な原因には、次のようなものがあります。
-
Amazon Simple Storage Service (Amazon S3) からダウンロードを行う場合、通常よりもサイズが大きくなり、時間がかかります。
-
関数が別のサービスにリクエストを行う場合、応答に時間がかかります。
-
関数に使用されるパラメータでは、関数の計算が複雑になり、呼び出しに時間がかかります。
アプリケーションをテストする際は、テストがデータのサイズと量、および実際のパラメータ値を正確に反映していることを確認してください。テストでは、便宜上小さいサンプルがよく使用されますが、ワークロードで適度に予想される上限のデータセットを使用する必要があります。
タイムアウトの設定 (コンソール)
Lambda コンソールで関数のタイムアウトを設定できます。
関数のタイムアウトを変更する方法
Lambda コンソールの [関数ページ]
を開きます。 -
関数を選択します。
-
[設定] を選択してから、[一般設定] を選択します。
-
[全般設定] で、[編集] を選択します。
-
[タイムアウト] に、1~900 秒 (15 分) の値を入力します。
-
[Save] を選択します。
タイムアウトの設定 (AWS CLI)
update-function-configuration
aws lambda update-function-configuration \ --function-name
my-function
\ --timeout120
タイムアウトの設定 (AWS SAM)
AWS Serverless Application Model を使用して、関数のタイムアウト値を設定できます。template.yaml
ファイルの Timeout プロパティを更新し、sam deploy を実行します。
例 template.yaml
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An AWS Serverless Application Model template describing your function. Resources:
my-function
: Type: AWS::Serverless::Function Properties: CodeUri: . Description: '' MemorySize: 128 Timeout:120
# Other function properties...