

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

# Lambda 関数のアクションを呼び出す
<a name="receiving-email-action-lambda"></a>

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 関数を呼び出す](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html)」 を参照してください。
+ **SNS Topic - **指定されたLambda 関数がトリガーされたときに通知するための Amazon SNS トピックの名前または ARN。Amazon SNS トピックの ARN の例は、*arn:aws:sns:us-east-1:123456789012:MyTopic* となります。詳細については、[Amazon Simple 通知サービス デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)の「*Amazon SNS トピックの作成*」を参照してください。

**要件**
+ 選択した Lambda 関数は、E メールの受信に使用する Amazon SES エンドポイントと同じ AWS リージョンにある必要があります。
+ 選択した Amazon SNS トピックは、E メールの受信に使用する Amazon SES エンドポイントと同じ AWS リージョンに存在する必要があります。

## Lambda 関数の記述
<a name="receiving-email-action-lambda-function"></a>

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 関数の例](receiving-email-action-lambda-example-functions.md)。概要レベルのユースケースの例については、「[ユースケースの例](receiving-email-action-lambda-example-use-cases.md)」を参照してください。

### 入力形式
<a name="receiving-email-action-lambda-input"></a>

Amazon SES は、Lambda 関数に JSON 形式で情報を渡します。最上位レベルのオブジェクトには `Records` 配列が格納され、この配列には `eventSource`、`eventVersion`、および `ses` のプロパティが入力されます。`ses` オブジェクトには `receipt` オブジェクトと `mail` オブジェクトが格納されますが、これらは「[通知の内容](receiving-email-notifications-contents.md)」で説明する 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>
           }
         }
     }
   ]
}
```

### 戻り値
<a name="receiving-email-action-lambda-function-return-values"></a>

Lambda 関数では、次のいずれかの値を返すことにより、メールフローを制御できます。
+ `STOP_RULE` - 現在の受信ルールでの後続のアクションは処理されませんが、後続の受信ルールは処理可能です。
+ `STOP_RULE_SET` - 後続のアクションまたは受信のルールは処理されません。
+ `CONTINUE` またはそれ以外の無効な値 - 後続のアクションおよび受信ルールが処理可能であることを意味します。

**Topics**
+ [Lambda 関数の記述](#receiving-email-action-lambda-function)
+ [受信 E メールイベントの例](receiving-email-action-lambda-event.md)
+ [ユースケースの例](receiving-email-action-lambda-example-use-cases.md)
+ [Lambda 関数の例](receiving-email-action-lambda-example-functions.md)