0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS Lambda】Responseの返し方一覧

Last updated at Posted at 2024-07-05

※Node.jsのSyntax、Naming Conventionで記載します。

  1. Return(シンプルで読みやすく、分かりやすいので推奨)

    シンプルにreturnで呼び元に値を返します。

    処理をキャンセルする場合は、throw new Error()を使います。

    非同期処理の場合も、async/awaitを使い、returnthrow new Error()で処理を続行、キャンセルする方法が推奨されています。

    index.mjs
    export const handler = async (event, context, callback) => {
      if(event.request.something === 'error value') throw new Error('Error')
      return event;
    };
    

  2. callback

    callback(null, 'Success')で呼び元に値を返すことができます。

    キャンセルの場合は、callback('Error')となります。

    処理を続行するcallback(null, 'Suucess')は、即座に実行されるわけではなく、Event loopの中身が空になったら実行されるため、Lambda内で非同期処理を扱う場合に効果を発揮します。ただし、推奨ではありません。

    index.mjs
    export const handler = (event, context, callback) => {
      if(event.request.something === 'error value') callback('Error')
      callback(null, event);
    };
    

  3. context

    以下に記載のように、Responseを返すことができます。

    ただし、古いやり方(2015年くらい)で、最新のドキュメントには記載されていないので、あえて選択する必要はないです。

    contextの詳細を知りたい方は、この記事が詳しいです。

    index.mjs
    export const handler = async (event, context, callback) => {
      if(event.request.something === 'error value') context.fail('Error')
      context.succeed(event);
    };
    

最後に

LambdaはAWS Serviceのイベントトリガーに設定されたり、Rest Apiとして使われたり多様な役割を果たします。ドキュメントも豊富でサンプルが様々な書き方で記載されており、混乱したので一度整理してみました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?