※Node.jsのSyntax、Naming Conventionで記載します。
-
Return(シンプルで読みやすく、分かりやすいので推奨)
シンプルに
return
で呼び元に値を返します。処理をキャンセルする場合は、
throw new Error()
を使います。非同期処理の場合も、
async/await
を使い、return
やthrow new Error()
で処理を続行、キャンセルする方法が推奨されています。index.mjsexport const handler = async (event, context, callback) => { if(event.request.something === 'error value') throw new Error('Error') return event; };
-
callback
callback(null, 'Success')
で呼び元に値を返すことができます。キャンセルの場合は、
callback('Error')
となります。処理を続行する
callback(null, 'Suucess')
は、即座に実行されるわけではなく、Event loopの中身が空になったら実行されるため、Lambda内で非同期処理を扱う場合に効果を発揮します。ただし、推奨ではありません。index.mjsexport const handler = (event, context, callback) => { if(event.request.something === 'error value') callback('Error') callback(null, event); };
-
context
以下に記載のように、Responseを返すことができます。
ただし、古いやり方(2015年くらい)で、最新のドキュメントには記載されていないので、あえて選択する必要はないです。
context
の詳細を知りたい方は、この記事が詳しいです。index.mjsexport const handler = async (event, context, callback) => { if(event.request.something === 'error value') context.fail('Error') context.succeed(event); };
最後に
LambdaはAWS Serviceのイベントトリガーに設定されたり、Rest Apiとして使われたり多様な役割を果たします。ドキュメントも豊富でサンプルが様々な書き方で記載されており、混乱したので一度整理してみました。