mamori017.log

雰囲気でクソコードを書いてバグを作っています

AWS Lambdaでタイムアウトを発生させてみる

AWS Lambdaで関数実行中にタイムアウトするとどうなるのか見たことが無かったのでためしにやってみました。

Lambdaで空の関数を作成し、ランタイムにPython3.6を選択したときに作成されるコードをsleepで10秒止めてみます。

import time

def lambda_handler(event, context):
    time.sleep(10)
    return 'Hello from Lambda'

テスト実行するだけなのでLambdaの設定はデフォルトのままにしました。 タイムアウトの時間はデフォルトで3秒なので、関数がsleepで止まっている間にLambdaが処理を終了させるはずです。

テストしてみたところ実行結果にタイムアウトのエラーメッセージが出力されました。

{
  "errorMessage": "2017-09-05T02:03:28.155Z xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Task timed out after 3.00 seconds"
}

f:id:mamori017:20170905105252p:plain

ついでなので、CloudWatchのアラームでLambdaの実行エラー時にSNSが送信されるように設定*1しました。 f:id:mamori017:20170905115800p:plain

アラーム作成後にLambda関数をテスト実行すると、アラームの状態がデータ不足からアラームに変わります。

f:id:mamori017:20170905124002p:plain

同時に、アクションに設定していたSNSトピックの送信先メールアドレスにメッセージが送信されます。

f:id:mamori017:20170905124310p:plain

Amazon Web Services実践入門 (WEB+DB PRESS plus)

Amazon Web Services実践入門 (WEB+DB PRESS plus)

AWSエキスパート養成読本[Amazon Web Servicesに最適化されたアーキテクチャを手に入れる! ] (Software Design plus)

AWSエキスパート養成読本[Amazon Web Servicesに最適化されたアーキテクチャを手に入れる! ] (Software Design plus)

*1:本来はLambdaのリトライを考慮したうえでCloudWatchのアラートの閾値と間隔を設定すべき。