Lambda 関数のアクションを呼び出す - Amazon Simple Email Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lambda 関数のアクションを呼び出す

Lambda アクションは、Lambda 関数を通じてコードを呼び出し、オプションで Amazon SNS を通じて通知します。このアクションには、次のオプションと要件があります。

オプション
  • Lambda 関数 — Lambda 関数の ARN。Lambda 関数の ARN の例は、arn:aws:lambda:us-east-1:account-id:function:MyFunction となります。

  • Invocation type - Lambda 関数の呼び出しタイプ。RequestResponse の呼び出しタイプは、関数の実行によって即時に応答が得られることを意味します。Event の呼び出しタイプは、関数が非同期に呼び出されることを意味します。ユースケースで同期実行が必要な場合を除き、呼び出しタイプには Event を使用することをお勧めします。

    RequestResponse の呼び出しには 30 秒のタイムアウトがあります。

    詳細については、AWS Lambda デベロッパーガイドの 「Lambda 関数を呼び出す」 を参照してください。

  • SNS Topic - 指定されたLambda 関数がトリガーされたときに通知するための Amazon SNS トピックの名前または ARN。Amazon SNS トピックの ARN の例は、arn:aws:sns:us-east-1:123456789012:MyTopic となります。詳細については、Amazon Simple 通知サービス デベロッパーガイドの「Amazon SNS トピックの作成」を参照してください。

要件
  • 選択する Lambda 関数は、E メールを受け取る Amazon SES エンドポイントと同じ AWS リージョン内に存在する必要があります。

  • 選択する Amazon SNS トピックは、E メールを受け取る Amazon SES エンドポイントと同じ AWS リージョン内に存在する必要があります。

Lambda 関数の記述

E メールを処理するために、Lambda 関数を (Event 呼び出しタイプを使用して) 非同期で呼び出すことができます。Lambda 関数に渡されるイベントオブジェクトには、インバウンド E メールイベントに関係するメタデータが格納されます。このメタデータを使用して、Amazon S3 バケットからメッセージコンテンツにアクセスすることもできます。

メールフローを実際に制御するには、Lambda 関数を同期的に呼びだす (RequestResponse 呼びだしタイプを使用する) 必要があります。Lambda 関数では、2 つの引数 (1 つ目の引数は callback、2 つ目の引数は nulldisposition、あるいは STOP_RULE に設定された STOP_RULE_SET プロパティ) を指定して CONTINUE メソッドを呼び出す必要があります。2 つ目の引数が null であるか、有効な disposition プロパティが指定されていない場合は、CONTINUE の場合と同様に、メールフローが継続し、後続のアクションとルールが処理されます。

例えば、Lambda 関数のコードの末尾に次の行を記述することで、受信ルールを停止することができます。

callback( null, { "disposition" : "STOP_RULE_SET" });

AWS Lambda のコードの例については、「Lambda 関数の例」を参照してください。概要レベルのユースケースの例については、「ユースケースの例」を参照してください。

入力形式

Amazon SES は、Lambda 関数に JSON 形式で情報を渡します。最上位レベルのオブジェクトには Records 配列が格納され、この配列には eventSourceeventVersion、および ses のプロパティが入力されます。ses オブジェクトには receipt オブジェクトと mail オブジェクトが格納されますが、これらは「通知の内容」で説明する Amazon SNS 通知とまったく同じ形式です。

Amazon SES が Lambda に渡すデータには、メッセージに関するメタデータと、複数の E メールヘッダーが含まれます。ただし、メッセージの本文は含まれません。

以下に、Amazon SES が Lambda 関数に提供する入力の構造を概要レベルで示します。

{ "Records": [ { "eventSource": "aws:ses", "eventVersion": "1.0", "ses": { "receipt": { <same contents as SNS notification> }, "mail": { <same contents as SNS notification> } } } ] }

戻り値

Lambda 関数では、次のいずれかの値を返すことにより、メールフローを制御できます。

  • STOP_RULE - 現在の受信ルールでの後続のアクションは処理されませんが、後続の受信ルールは処理可能です。

  • STOP_RULE_SET - 後続のアクションまたは受信のルールは処理されません。

  • CONTINUE またはそれ以外の無効な値 - 後続のアクションおよび受信ルールが処理可能であることを意味します。

次のトピックでは、受信メールイベントのサンプル、高レベルのユースケースの例と、AWS Lambda コード例について説明します。