

サポート終了通知: 2027 年 3 月 31 日、 AWS は Amazon WorkMail のサポートを終了します。2027 年 3 月 31 日以降、Amazon WorkMail コンソールまたは Amazon WorkMail リソースにアクセスできなくなります。詳細については、[Amazon WorkMail のサポート終了](https://docs.aws.amazon.com/workmail/latest/adminguide/workmail-end-of-support.html)」を参照してください。

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

# Amazon WorkMail AWS Lambda の の設定
<a name="lambda"></a>

インバウンドおよびアウトバウンドの E メールフロールールで **Lambda 実行**アクションを使用して、ルールに一致する E メールメッセージを処理用の AWS Lambda 関数に渡します。

次の設定から Amazon WorkMail で **[Lambda を実行]** アクションを選択します。

**同期 **[Lambda を実行]** の設定**  
フロールールに一致する E メールメッセージは、送信または配信される前に処理のために Lambda 関数に渡されます。この設定を使用してメールの内容を変更します。さまざまなユースケースに合わせて、受信または送信のメールフローを制御することもできます。たとえば、Lambda 関数に渡されるルールは、機密性の高いメールメッセージの配信をブロックしたり、添付ファイルを削除したり、免責事項を追加したりできます。

**非同期 **[Lambda を実行]** の設定**  
フロールールに一致する E メールメッセージは、送信または配信中の処理のために Lambda 関数に渡されます。この設定は、E メールの配信には影響せず、受信または送信の E メールメッセージのメトリクスの収集などのタスクに使用されます。

同期設定と非同期設定のどちらを選択した場合でも、Lambda 関数に渡されるイベントオブジェクトには、受信または送信の E メールイベントのメタデータが含まれます。メタデータ内のメッセージ ID を使用して、E メールメッセージの完全なコンテンツにアクセスすることもできます。詳細については、 [を使用したメッセージコンテンツの取得 AWS Lambda](lambda-content.md) を参照してください。E メールイベントの詳細については、[Lambda イベントデータ](#lambda-data) を参照してください。

受信および送信 E メールフロールールの詳細については、[E メールフローの管理](email-flows.md) を参照してください。Lambda の詳細については、[AWS Lambda デベロッパーガイド **](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) を参照してください。

**注記**  
現在、Lambda E メールフロールールは、設定されている Amazon WorkMail 組織と同じ AWS リージョン内の Lambda 関数のみを参照 AWS アカウント します。

## AWS Lambda for Amazon WorkMail の開始方法
<a name="start-lambda"></a>

Amazon WorkMail AWS Lambda で の使用を開始するには、[WorkMail Hello World Lambda 関数](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:489970191081:applications/workmail-hello-world-python)を から AWS Serverless Application Repository アカウントにデプロイすることをお勧めします。この関数には、お客様に必要なすべてのリソースと権限が設定されています。その他の例については、GitHub の [amazon-workmail-lambda-templates](https://github.com/aws-samples/amazon-workmail-lambda-templates) リポジトリを参照してください。

独自の Lambda 関数を作成する場合は、 AWS Command Line Interface () を使用してアクセス許可を設定する必要がありますAWS CLI。次のコマンドの例を使用するには、次の操作を行います。
+ `MY_FUNCTION_NAME` の部分はお客様の Lambda 関数の名前に置き換えます。
+ `REGION` の部分はお客様の Amazon WorkMail AWS リージョンに置き換えます。使用可能な Amazon WorkMail リージョンには、`us-east-1` (米国東部 (バージニア北部))、`us-west-2` (米国西部 (オレゴン))、`eu-west-1` (欧州 (アイルランド)) があります。
+ `AWS_ACCOUNT_ID` を、ご自身の 12 桁の AWS アカウント ID に置き換えます。
+ `WORKMAIL_ORGANIZATION_ID` の部分はお客様の Amazon WorkMail 組織 ID に置き換えます。これは、**[組織]** ページの組織のカードに記載されています。



```
aws --region {{REGION}} lambda add-permission --function-name {{MY_FUNCTION_NAME}} 
--statement-id AllowWorkMail 
--action "lambda:InvokeFunction" 
--principal workmail.{{REGION}}.amazonaws.com
--source-arn arn:aws:workmail:{{REGION:AWS_ACCOUNT_ID}}:organization/{{WORKMAIL_ORGANIZATION_ID}}
```

の使用の詳細については AWS CLI、[https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」を参照してください。

## 同期 **[Lambda を実行]** ルールの設定
<a name="synchronous-rules"></a>

同期 **[Lambda を実行]** ルールを設定するには、**[Lambda の実行]** アクションを持つ E メールフロールールを作成し、**[同期して実行]** チェックボックスをオンにます。メールフロールールの作成の詳細については、[E メールフロールールの作成](create-email-rules.md) を参照してください。

同期ルールの作成を完了するには、Lambda Amazon リソースネーム (ARN) を追加し、次のオプションを設定します。

****フォールバックアクション****  
Amazon WorkMail アクションは、Lambda 関数の実行に失敗した場合に適用されます。このアクションは、**[すべての受信者]** が設定されていない場合、Lambda 応答からはずされた受信者にも適用されます。**[フォールバックアクション]** を別の Lambda アクションにすることはできません。

****[ルール]** (分)**  
Amazon WorkMail が呼び出しに失敗した場合に Lambda 関数が再試行される期間。**[フォールバックアクション]** は、この期間の終了時に適用されます。

**注記**  
同期 **[Lambda を実行]** ルールは、**\*** 宛先指定の条件のみをサポートしています。

## Lambda イベントデータ
<a name="lambda-data"></a>

Lambda 関数は、以下のイベントデータを使用してトリガーされます。データの表示は、Lambda 関数に使用されているデータプログラミング言語に応じて異なります。

```
{
    "summaryVersion": "2018-10-10",
    "envelope": {
        "mailFrom" : {
            "address" : "{{from@example.com}}"
        },
        "recipients" : [
           { "address" : "{{recipient1@example.com}}" },
           { "address" : "{{recipient2@example.com}}" }
        ]
    },
    "sender" : {
        "address" :  "{{sender@example.com}}"
    },
    "subject" : "{{Hello From Amazon WorkMail!}}",
    "messageId": "{{00000000-0000-0000-0000-000000000000}}",
    "invocationId": "{{00000000000000000000000000000000}}",
    "flowDirection": "INBOUND",
    "truncated": false
}
```

イベント JSON には、次に示すデータが含まれます。

**summaryVersion**  
`LambdaEventData` のバージョン番号。`LambdaEventData` で後方互換性のない変更を加えた場合にのみ更新されます。

**envelope**  
E メールメッセージのエンベロープ。次のフィールドが含まれています。    
**mailFrom**  
**[送信元]** アドレス。通常、E メールメッセージを送信したユーザーの E メールアドレスです。ユーザーが E メールメッセージを別のユーザーとして送信したか別のユーザーの代理で送信した場合、**[mailFrom]** フィールドは、実際の送信者の E メールアドレスではなく、E メールメッセージの名目上の送信者であるユーザーの E メールアドレスを返します。  
**受信者**  
受信者の E メールアドレスのリスト。Amazon WorkMail では、 **To**、 **CC**、 または **BCC** を区別しません。  
受信 E メールフロールールの場合、このリストには、ルールを作成する Amazon WorkMail 組織内のすべてのドメインの受信者が含まれます。この Lambda 関数は、送信者からの SMTP 会話ごとに個別に呼び出され、受信者フィールドには、その SMTP 会話からの受信者がリストされます。外部ドメインの受信者は含まれません。

**送信者**  
別のユーザーの代理で E メールメッセージを送信したユーザーの E メールアドレス。このフィールドは、E メールメッセージが別のユーザーの代理で送信された場合にのみ設定されます。

**subject**  
E メールの件名。256 文字の制限を超えると切り捨てられます。

**messageId**  
Amazon WorkMail Message Flow SDK を使用するときに E メールメッセージの完全なコンテンツにアクセスするために使用される一意の ID。

**invocationId**  
一意の Lambda 呼び出しの ID。同じ **LambdaEventData** に対して Lambda 関数が複数回呼び出された場合でもこの ID に変わりはありません。再試行を検出し、重複を避けるために使用します。

**flowDirection**  
E メールフローの方向を示します。**INBOUND** または **OUTBOUND** のどちらかです。

**truncated**  
件名の長さではなく、ペイロードサイズに適用されます。`true` の場合、ペイロードサイズが 128 KB の制限を超えると、受信者のリストが制限を満たすように切り捨てられます。

## 同期 **[Lambda を実行]** 応答スキーマ
<a name="synchronous-schema"></a>

同期 **[Lambda を実行]** アクションを持つ E メールフロールールが受信または送信メールメッセージと一致した場合、Amazon WorkMail は設定された Lambda 関数を呼び出して、E メールメッセージに対してアクションを実行する前に応答を待ちます。この Lambda 関数は、アクション、アクションタイプ、適用可能なパラメータ、およびアクションが適用される受信者をリストする事前定義されたスキーマに従って応答を返します。

次の例は、同期 **[Lambda を実行]** 応答です。応答は、Lambda 関数に使用されるプログラミング言語によって異なります。

```
{
    "actions": [                          
      {
        "action" : {                       
          "type": "{{string}}",                 
          "parameters": { {{various}} }       
        },
        "recipients": [{{list of strings}}],      
        "allRecipients": {{boolean}}            
      }
    ]
}
```

レスポンス JSON には、次のデータが含まれます。

**action**  
受信者に対して実行するアクション。

**型**  
アクションタイプ。非同期 **[Lambda を実行]** アクションの場合、アクションタイプは返されません。  
インバウンドルールのアクションタイプには、**BOUNCE**、**DROP**、**DEFAULT**、**BYPASS\_SPAM\_CHECK**、**MOVE\_TO\_JUNK** があります。詳細については、[受信 E メールルールアクション](email-flows.md#email-flows-rule-actions) を参照してください。  
アウトバウンドルールのアクションタイプには、**BOUNCE**、**DROP**、**DEFAULT** があります。詳細については、[送信 E メールルールアクション](email-flows.md#email-flows-rule-outbound) を参照してください。

**パラメータ**  
追加のアクションパラメータ。**BOUNCE** アクションタイプで、**bounceMessage** キーおよび **string** 値を持つ JSON オブジェクトとしてサポートされます。このバウンスメッセージは、バウンス E メールメッセージを作成するために使用されます。

**受信者**  
アクションを実行する必要がある E メールアドレスのリスト。元の受信者リストに含まれていない場合でも、新しい受信者を応答に追加できます。アクションに対して **AllRecipients** が true の場合、このフィールドは必須ではありません。  
受信メールに対して Lambda アクションが呼び出されると、組織からの新しい受信者のみを追加できます。新しい受信者は、**BCC** として応答に追加されます。

**allRecipients**  
true の場合、Lambda 応答内の別の特定のアクションの対象とならないすべての受信者にアクションを適用します。

### 同期 **[Lambda を実行]** アクション制限
<a name="synchronous-limits"></a>

Amazon WorkMail が同期 **[Lambda を実行]** アクションの Lambda 関数を呼び出す場合は、次の制限が適用されます。
+ Lambda 関数は 15 秒以内に応答します。応答しない場合、失敗した呼び出しとして扱われます。
**注記**  
システムが、指定した **[ルールタイムアウト]** 間隔で呼び出しを再試行します。
+ 最大 256 KB の Lambda 関数応答が許可されます。
+ 応答では、最大 10 個の固有のアクションが許可されます。10 を超えるアクションは、設定された**フォールバックアクション**の対象となります。
+ 送信 Lambda 関数には、最大 500 人の受信者が許可されます。
+ **[ルールタイムアウト]** の最大値は 240 分です。最小値 0 が設定されている場合、Amazon WorkMail がフォールバックアクションを適用する前に再試行は行われません。

### 同期 **[Lambda を実行]** アクションのエラー
<a name="synchronous-failures"></a>

Amazon WorkMail が、エラー、無効な応答、または Lambda タイムアウトのために Lambda 関数を呼び出すことができない場合、Amazon WorkMail は **[ルールタイムアウト]** 期間が完了するまで、エクスポネンシャルバックオフで呼び出しを再試行します。次に、**フォールバックアクション**が、E メールメッセージのすべての受信者に適用されます。詳細については、「[同期 **[Lambda を実行]** ルールの設定](#synchronous-rules)」を参照してください。

## 同期 **[Lambda を実行]** 応答の例
<a name="synchronous-responses"></a>

次の例は、一般的な同期 **[Lambda を実行]** 応答の構造を示します。

**Example : 指定した受信者を E メールメッセージから削除します。**  
次の例は、E メールメッセージから受信者を削除するための同期 **[Lambda を実行]** 応答の構造を示します。  

```
{
    "actions": [
      {
        "action": {
          "type": "DEFAULT"
        },
        "allRecipients": true
      },
      {
        "action": {
          "type": "DROP"
        },
        "recipients": [
          "{{drop-recipient@example.com}}"
        ]
      }
    ]
}
```

**Example : カスタム E メールメッセージでバウンスする**  
次の例は、カスタム E メールメッセージでバウンスするため同期 **[Lambda を実行]** 応答の構造を示します。  

```
{
    "actions" : [
      {
        "action" : {
          "type": 'BOUNCE',
          "parameters": {
            "bounceMessage" : "{{Email in breach of company policy.}}"
          }
        },
        "allRecipients": true
      }
    ]
}
```

**Example : E メールメッセージに受信者を追加する**  
次の例は、E メールメッセージに受信者を追加するための同期 **[Lambda を実行]** 応答の構造を示します。これにより、E メールメッセージの **[To]** または **[CC]** フィールドは更新されません。  

```
{
    "actions": [
      {
        "action": { 
          "type": "DEFAULT" 
        },
        "recipients": [
          "{{new-recipient@example.com}}"
         ]
      },
      {
        "action": { 
          "type": "DEFAULT" 
        },
        "allRecipients": true
      }
    ]
}
```

**[Lambda を実行]** アクションのための Lambda 関数を作成するときに使用するその他のコード例については、[Amazon WorkMail Lambda テンプレート](https://github.com/aws-samples/amazon-workmail-lambda-templates) を参照してください。

## Amazon WorkMail での Lambda の使用に関する詳細
<a name="lambda-more"></a>

Lambda 関数をトリガーする E メールメッセージの完全なコンテンツにアクセスすることもできます。詳細については、「[を使用したメッセージコンテンツの取得 AWS Lambda](lambda-content.md)」を参照してください。