翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 つ目の引数は null
、disposition
、あるいは 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
配列が格納され、この配列には eventSource
、eventVersion
、および 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
またはそれ以外の無効な値 - 後続のアクションおよび受信ルールが処理可能であることを意味します。