

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

# Amazon Chime SDK メッセージング用のチャネルプロセッサの設定
<a name="processor-setup"></a>

チャネルフローの使用を開始するには、まず、ユースケースの前処理を行うプロセッサ Lambda 関数を作成します。例えば、メッセージの内容やメタデータを更新したり、メッセージを拒否して送信されないようにしたり、元のメッセージを通過させたりすることができます。

**前提条件**
+ Lambda 関数は、AppInstance と同じ AWS アカウントと AWS リージョンに存在する必要があります。

**呼び出しアクセス許可の付与**  
Amazon Chime SDK メッセージングサービスに、Lambda リソースを呼び出すためのアクセス許可を与える必要があります。アクセス許可の詳細については、「[AWS Lambdaでのリソースベースのポリシーの使用](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)」を参照してください。例えば、次のようになります。

  
**プリンシパル**:「messaging.chime.amazonaws.com」  
**アクション**: lambda:InvokeFunction  
[**効果**]: [許可]  
**AWS:SourceAccount**: *お使いの AWS AccountId*。  
**AWS:SourceArn**: `"arn:aws:chime:region:AWS AccountId: appInstance/"`

**注記**  
特定のアプリケーションインスタンス ID を指定してプロセッサを呼び出すことも、ワイルドカードを使用してアカウント内のすべての Amazon Chime SDK アプリケーションインスタンスにプロセッサの呼び出しを許可することもできます。

**コールバックのアクセス許可の付与**  
プロセッサ Lambda 関数が `ChannelFlowCallback` API を呼び出せるようにする必要もあります。その方法については、「AWS Lambda 開発者ガイド」の「[AWS Lambda 実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)」を参照してください。

Lambda 関数の実行ロールにインラインポリシーを追加できます。この例では、`ChannelFlowCallback API` の呼び出しをプロセッサに許可します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "chime:ChannelFlowCallback"
            ],
            "Resource": [
            "arn:aws:chime:us-east-1:111122223333:appInstance/*"
            ]
        }
    ]
}
```

------

**注記**  
Lambda 関数のベストプラクティスに従ってください。詳細については、次のトピックを参照してください。  
「[Performance Efficiency Best Practices](https://docs.aws.amazon.com/whitepapers/latest/serverless-architectures-lambda/performance-efficiency-best-practices.html)」 
[を使用するためのベストプラクティス AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html)
[予約済同時実行数の設定](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html#configuration-concurrency-reserved)
[非同期呼び出し](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)

**プロセッサ Lambda 関数の呼び出し**  
ユーザーがメッセージを送信すると、次の入力リクエストによってプロセッサ Lambda 関数が呼び出されます。

```
{
    "EventType": "string"
    "CallbackId": "string"
    "ChannelMessage": {
        "MessageId": "string",
        "ChannelArn": "string",
        "Content": "string",
        "Metadata": "string",
        "Sender":{
            "Arn": "string", 
            "Name": "string"
        },
        "Persistence": "string",
        "LastEditedTimestamp": "string", 
        "Type": "string",
        "CreatedTimestamp": "string", 
    }
}
```

EventType  
プロセッサに送信されるイベント。値は `CHANNEL_MESSAGE_EVENT` 定数です。

CallbackId  
プロセッサから `ChannelFlowCallback` API を呼び出す際に使用されるトークン。

ChannelMessage  
*ChannelArn* - チャネルの ARN  
*Content* - 処理対象のメッセージコンテンツ  
*CreatedTimestamp* - メッセージが作成された時刻  
*LastEditedTimestamp* - メッセージが編集された日時  
*MessageId* - メッセージ識別子  
*Metadata* - 処理対象のメッセージメタデータ  
*Persistence* - メッセージをバックエンドで永続化するかどうかを制御するブール値。有効な値：`PERSISTENT | NON_PERSISTENT`  
*Sender* - メッセージの送信者。タイプ: [identity オブジェクト](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Identity.html)。  
*Type* - メッセージタイプ。ChannelFlow は `STANDARD` メッセージタイプのみをサポートします。有効な値: `STANDARD`

プロセッサ関数は各メッセージについて以下を決定します。
+ メッセージコンテンツ、メタデータ、またはその両方を更新するかどうか
+ メッセージを拒否するかどうか 
+ メッセージを変更しないで残すかどうか

処理が終了すると、プロセッサ Lambda 関数は結果を Amazon Chime SDK メッセージングサービスに送り返し、メッセージをすべての受信者に送信できるようにします。メッセージステータスは、プロセッサ Lambda 関数が結果を返送するまで `PENDING` とマークされます。プロセッサ Lambda 関数は 48 時間以内に結果を送り返します。それ以降のメッセージ配信は保証されず、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelFlowCallback.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelFlowCallback.html) API は Forbidden Exception のエラーメッセージをスローします。結果を送り返すには、`ChannelFlowCallback` API を呼び出します。