Amazon Simple Email Service
開発者ガイド

Lambda アクション

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

  • Lambda function - Lambda 関数の ARN。Lambda 関数の ARN の例は、arn:aws:lambda:us-west-2:account-id:function:MyFunction となります。AWS Lambda については、AWS Lambda Developer Guide を参照してください。

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

    注記

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

    AWS Lambda の呼び出しタイプの詳細については、AWS Lambda Developer Guide を参照してください。

  • SNS Topic - 指定された Lambda 関数がトリガーされたときに通知するための Amazon SNS トピックの名前または ARN。Amazon SNS トピックの ARN の例は、arn:aws:sns:us-west-2:123456789012:MyTopic となります。アクションを設定するときに [Create SNS Topic] を選択することで、Amazon SNS トピックを作成することもできます。Amazon SNS トピックの詳細については、Amazon Simple Notification Service 開発者ガイド を参照してください。

    注記

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

Lambda 関数の記述

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

メールフローを実際に制御するには、Lambda 関数を同期的に呼び出す (RequestResponse 呼び出しタイプを使用する) 必要があります。Lambda 関数では、2 つの引数 (1 つ目の引数は null、2 つ目の引数は、STOP_RULESTOP_RULE_SET、または CONTINUE に設定された disposition プロパティ) を指定して callback メソッドを呼び出す必要があります。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 関数に渡す入力の構造について以下に概要を示します。

{ "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 またはそれ以外の無効な値 - 後続のアクションおよび受信ルールが処理可能であることを意味します。

このページの内容: