

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

# Amazon Chime SDK メッセージングを使用する
<a name="using-the-messaging-sdk"></a>

「Amazon Chime SDK Developer Guide」のこのセクションは、Amazon Chime SDK サービスで実行されるメッセージングアプリケーションの作成に役立ちます。この SDK は、基本的なメッセージングアプリケーションを作成するのに必要な概念的かつ実用的な情報を提供します。

**Topics**
+ [Amazon Chime SDK Identity 名前空間への移行](identity-namespace-migration.md)
+ [Amazon Chime SDK Messaging 名前空間への移行](messaging-namespace-migration.md)
+ [Amazon Chime SDK メッセージングの前提条件について](messaging-prerequisites.md)
+ [Amazon Chime SDK メッセージングの概念について](messaging-concepts.md)
+ [Amazon Chime SDK メッセージングアーキテクチャについて](messaging-architecture.md)
+ [Amazon Chime SDK メッセージタイプについて](msg-types.md)
+ [Amazon Chime SDK メッセージングの開始方法](getting-started.md)
+ [Amazon Chime SDK メッセージングのシステムメッセージについて](system-messages.md)
+ [Amazon Chime SDK メッセージングの IAM ロールの例](iam-roles.md)
+ [ロールごとの権限について](auth-by-role.md)
+ [Amazon Chime SDK メッセージングでのメッセージングデータのストリーミング](streaming-export.md)
+ [Elastic チャネルを使用して Amazon Chime SDK ミーティングでライブイベントをホストする](elastic-channels.md)
+ [Amazon Chime SDK メッセージングでモバイルプッシュ通知を使用してメッセージを受信する](using-push-notifications.md)
+ [Amazon Chime SDK メッセージングのサービスリンクロールの使用](using-roles.md)
+ [チャネルフローを使用した Amazon Chime SDK メッセージングのメッセージの処理](using-channel-flows.md)
+ [AppInstanceBots を Amazon Chime SDK メッセージングのインテリジェントチャネルエージェントとして使用する](appinstance-bots.md)
+ [Amazon Chime SDK メッセージングのメッセージ保持の管理](manage-retention.md)
+ [Amazon Chime SDK メッセージングのユーザーインターフェイスコンポーネント](ui-components.md)
+ [Amazon Chime SDK メッセージングとクライアントライブラリの統合](integrate-client-library.md)
+ [JavaScript で Amazon Chime SDK メッセージングを使用する](use-javascript.md)

# Amazon Chime SDK Identity 名前空間への移行
<a name="identity-namespace-migration"></a>

[Amazon Chime SDK Identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) 名前空間は、AppInstances や AppInstanceUsers などの Amazon Chime SDK ID リソースの作成と管理に使用される API 専用の場所です。名前空間を使用して、Amazon Chime SDK ID API エンドポイントが利用可能な任意の AWS リージョンのエンドポイントに対処します。Amazon Chime SDK を使い始めたばかりの場合は、この名前空間を使用してください。リージョンの詳細については、このガイドの「[Amazon Chime SDK で利用可能な AWS リージョン](sdk-available-regions.md)」を参照してください。

[Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) 名前空間を使用する既存のアプリケーションでは、専用の名前空間への移行を計画する必要があります。

**Topics**
+ [移行すべき理由](#identity-migration-reasons)
+ [移行する前に](#id-before-migrating)
+ [名前空間の相違点](#id-namespace-differences)

## 移行すべき理由
<a name="identity-migration-reasons"></a>

以下の理由から、[Amazon Chime SDK Identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) 名前空間に移行することをお勧めします。

**API エンドポイントの選択**  
Amazon Chime SDK Identity 名前空間は、[API エンドポイントを利用できる任意のリージョン](https://docs.aws.amazon.com/chime-sdk/latest/dg/sdk-available-regions.html)の API エンドポイントを使用できる唯一の API 名前空間です。`us-east-1` 以外の API エンドポイントを使用する場合は、Amazon Chime SDK Identity 名前空間を使用する必要があります。現在のエンドポイントの詳細については、このガイドの「[API マッピング](migrate-from-chm-namespace.md#name-end-map)」を参照してください。

**メッセージング API の更新と新規追加**  
Amazon Chime SDK Identity 名前空間の ID API のみ追加または更新されます。

## 移行する前に
<a name="id-before-migrating"></a>

移行する前に、名前空間の相違点に注意してください｡ 以下の表では、名前空間の一覧と説明を示しています。


|  | Amazon Chime SDK Identity 名前空間 | Amazon Chime 名前空間 | 
| --- | --- | --- | 
| AWS SDK 名前空間 | ChimeSDKIdentity | Chime | 
| リージョン | 複数 | us-east-1 のみ | 
| サービスプリンシパル | https://identity.chime.amazonaws.com | https://chime.amazonaws.com | 
| API | ID 用の API のみ | ID 用の API と Amazon Chime のその他の部分 | 
| ユーザー有効期限 | 利用可能 | 利用不可 | 
| ボット | 利用可能 | 利用不可 | 

## 名前空間の相違点
<a name="id-namespace-differences"></a>

以下のセクションでは、`Chime` 名前空間と `ChimeSDKIdentity` 名前空間の相違点について説明します。

**AWS SDK 名前空間**  
Amazon Chime SDK 名前空間では `Chime` という正式名を使用します。Amazon Chime SDK Identity 名前空間では `ChimeSDKIdentity` という正式名を使用します。名前の正確な形式はプラットフォームによって異なります。

例えば、Node.js で AWS SDK を使用して ID を作成する場合は、コード行を使用して名前空間に対処します。

```
const chimeIdentity = AWS.Chime();
```

`ChimeSDKIdentity` 名前空間に移行するには、このコード行を新しい名前空間とエンドポイントリージョンで更新します。

```
const chimeIdentity = AWS.ChimeSDKIdentity({ region: "eu-central-1" });
```

**Regions**  
[Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) 名前空間は、`us-east-1` リージョンの API エンドポイントのみをアドレス指定します。[Amazon Chime SDK Identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) 名前空間は、利用可能な任意のリージョンで Amazon Chime SDK Identity API エンドポイントをアドレス指定できます。現在のエンドポイントリージョンのリストについては、本ガイドの「[Amazon Chime SDK で利用可能な AWS リージョン](sdk-available-regions.md)」を参照してください。

**エンドポイント**  
[Amazon Chime SDK Identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) 名前空間は、[Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) 名前空間とは異なる API エンドポイントを使用します。

ID リソースを更新できるのは、ID リソースの作成に使用したエンドポイントだけです。つまり、`eu-central-1` のエンドポイントを介して作成された AppInstance は、`eu-central-1` 経由でしか変更できないということです。また、Chime 名前空間を介して作成された AppInstance を `us-east-1` の ChimeSDKIdentity 名前空間を使用してアドレス指定したり、AppInstance メンバーと AppInstanceUser メンバーが作成されたリージョン以外のリージョンにチャネルを作成したりすることもできません。現在のエンドポイントの詳細については、このガイドの「[API マッピング](migrate-from-chm-namespace.md#name-end-map)」を参照してください。

**サービスプリンシパル**  
[Amazon Chime SDK Identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) 名前空間は、新しいサービスプリンシパル `Identity.chime.amazonaws.com` を使用します。サービスへのアクセスを許可する SQS、SNS またはその他の IAM アクセスポリシーがある場合は、それらのポリシーを更新して新しいサービスプリンシパルへのアクセスを許可する必要があります。

**API**  
[Amazon Chime SDK Identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) 名前空間には、メッセージングリソースの作成と管理、およびメッセージの送受信のための API のみが含まれています。[Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) 名前空間には、メッセージング用および Amazon Chime サービスのその他の部分用の API が含まれています。

**ユーザー有効期限**  
AppInstanceUsers の作成時に有効期限を設定すると、一時的なユーザーを作成できます。例えば、大規模なブロードキャストの間だけ存在するチャットユーザーを作成できます。AppInstanceUsers の有効期限の設定をサポートしているのは Identity 名前空間のみです。

**ボット**  
[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_AppInstanceBot.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_AppInstanceBot.html) API を使用して、Amazon Lex V2 を搭載したチャットボットをアプリケーションに追加します。AppInstanceBots は Identity 名前空間でのみ使用できます。ボットの詳細については、このガイドの「[AppInstanceBots を Amazon Chime SDK メッセージングのインテリジェントチャネルエージェントとして使用する](appinstance-bots.md)」を参照してください。

**その他の API**  
Identity 名前空間には、Chime 名前空間にはないその他の API が増え続けています。Amazon Chime SDK の使用を開始する場合は、Identity 名前空間を使用してすべての最新機能にアクセスできるようにしてください。現在の API の詳細については、「*Amazon Chime SDK API Reference*」の「[Amazon Chime SDK Identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html)」を参照してください。

# Amazon Chime SDK Messaging 名前空間への移行
<a name="messaging-namespace-migration"></a>

[Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) 名前空間は、Amazon Chime SDK メッセージングリソースを作成および管理する API のための専用の場所です。この名前空間を使用すると、任意の AWS リージョンの Amazon Chime SDK メッセージング API エンドポイントをアドレス指定できます (そのリージョンでそれらのエンドポイントを利用できる場合)。Amazon Chime SDK を使い始めたばかりの場合は、この名前空間を使用してください。リージョンの詳細については、このガイドの「[Amazon Chime SDK で利用可能な AWS リージョン](sdk-available-regions.md)」を参照してください。

[Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) 名前空間を使用する既存のアプリケーションでは、専用の名前空間への移行を計画する必要があります。

**Topics**
+ [移行すべき理由](#migration-reasons)
+ [移行する前に](#before-migrating)
+ [名前空間の相違点](#namespace-differences)

## 移行すべき理由
<a name="migration-reasons"></a>

以下の理由から、[Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) 名前空間に移行することをお勧めします。

**API エンドポイントの選択**  
Amazon Chime SDK Messaging 名前空間は、[API エンドポイントを利用できる任意のリージョン](https://docs.aws.amazon.com/chime-sdk/latest/dg/sdk-available-regions.html)の API エンドポイントを使用できる唯一の API 名前空間です。米国東部 (バージニア北部) 以外の API エンドポイントを使用する場合は、Amazon Chime SDK Messaging 名前空間を使用する必要があります。  
Amazon Chime SDK メッセージングが AWS リージョンを使用する方法の詳細については、このガイドの[「利用可能なリージョン](https://docs.aws.amazon.com/chime-sdk/latest/dg/available-regions.html)」を参照してください。

**メッセージング API の更新と新規追加**  
Amazon Chime SDK Messaging 名前空間のメッセージング API のみを追加または更新します。

## 移行する前に
<a name="before-migrating"></a>

移行する前に、名前空間の相違点に注意してください｡ 以下の表では、名前空間の一覧と説明を示しています。


|  | Amazon Chime SDK Messaging 名前空間 | Amazon Chime 名前空間 | 
| --- | --- | --- | 
| AWS SDK 名前空間 | ChimeSDKMessaging | Chime | 
| リージョン | 複数 | 米国東部 (バージニア北部) のみ | 
| API | メッセージング用の API のみ | メッセージング用の API と Amazon Chime のその他の部分 | 
| フロー | 使用可能 | 利用不可 | 
| Elastic チャネル | 使用可能 | 利用不可 | 

## 名前空間の相違点
<a name="namespace-differences"></a>

以下のセクションでは、`Amazon Chime` 名前空間と `Amazon Chime SDK Messaging` 名前空間の相違点について説明します。

**AWS SDK 名前空間**  
Amazon Chime SDK 名前空間では `Chime` という正式名を使用します。Amazon Chime SDK Messaging 名前空間では `ChimeSDKMessaging` という正式名を使用します。名前の正確な形式はプラットフォームによって異なります。

例えば、Node.js で AWS SDK を使用してメッセージングを作成する場合は、コード行を使用して名前空間に対処します。

```
const chimeMessaging = AWS.Chime();
```

Amazon Chime Messaging SDK に移行するには、このコード行を新しい名前空間とエンドポイントリージョンで更新します。

```
const chimeMessaging = AWS.ChimeSDKMessaging({ region: "Europe (Frankfurt)" });
```

**リージョン**  
[Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) 名前空間は、`US East (N. Virginia)` リージョンの API エンドポイントのみをアドレス指定します。[Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) 名前空間は、利用可能な任意のリージョンで Amazon Chime SDK メッセージング API エンドポイントをアドレス指定できます。メッセージングリージョンの最新リストについては、本ガイドの「[Amazon Chime SDK で利用可能な AWS リージョン](sdk-available-regions.md)」を参照してください。

**エンドポイント**  
[Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) 名前空間は、[Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) 名前空間とは異なる API エンドポイントを使用します。

メッセージングリソースを変更するために使用できるのは、メッセージングリソースの作成に使用したエンドポイントだけです。つまり、`Europe (Frankfurt)` のエンドポイントを介して作成されたメッセージングリソースは、`Europe (Frankfurt)` 経由でしか変更できないということです。これは、欧州 (フランクフルト) のエンドポイントを介して作成されたチャネルは、欧州 (フランクフルト) を介してのみ変更できるということです。また、`Chime` 名前空間を介して作成されたチャネルを、米国東部 (バージニア北部) の `ChimeSDKMessaging` 名前空間でアドレス指定することもできません。現在のエンドポイントの詳細については、このガイドの「[API マッピング](migrate-from-chm-namespace.md#name-end-map)」を参照してください。

**サービスプリンシパル**  
[Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) 名前空間は、新しいサービスプリンシパル `messaging.chime.amazonaws.com` を使用します。サービスへのアクセスを許可する SQS、SNS またはその他の IAM アクセスポリシーがある場合は、それらのポリシーを更新して新しいサービスプリンシパルへのアクセスを許可する必要があります。

**API**  
[Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) 名前空間には、メッセージングリソースの作成と管理、およびメッセージの送受信のための API のみが含まれています。[Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) 名前空間には、メッセージング用および Amazon Chime サービスのその他の部分用の API が含まれています。

**チャネルフロー**  
チャネルフローを使用すると、送信中のメッセージがメッセージングチャネルのメンバーに配信される前に、そのメッセージに対してビジネスロジックを実行できます。例えば、行政 ID 番号、電話番号、または冒涜的な表現などの機密データをメッセージが配信される前に削除するフローを作成できます。これは、企業のコミュニケーションポリシーやその他のコミュニケーションガイドラインを実施するのに役立ちます。

投票アンケートへの回答を集約した後で結果を参加者に返送する、メッセージを SMS で送信するなどの機能を実行するためにチャネルフローを使用することもできます。

チャネルフローは `ChimeSDKMessaging` 名前空間でのみ使用できます。詳細については、このガイドの「[チャネルフローを使用した Amazon Chime SDK メッセージングのメッセージの処理](using-channel-flows.md)」を参照してください。

**Elastic チャネル**  
Elastic チャネルは、所定の数のサブチャネル間で最大 100 万人のチャットユーザーを自動的にバランスよく分散する、大規模なチャット体験をサポートします。Elastic チャネルは `ChimeSDKMessaging` エンドポイントでのみ使用できます。Elastic チャネルの詳細については、このガイドの「[Elastic チャネルを使用して Amazon Chime SDK ミーティングでライブイベントをホストする](elastic-channels.md)」を参照してください。

**その他の API**  
Messaging 名前空間には、`Chime` 名前空間にはない API が増え続けています。Amazon Chime SDK の使用を開始する場合は、メッセージング名前空間を使用してすべての最新機能にアクセスできるようにしてください。現在の API の詳細については、「*Amazon Chime SDK API Reference*」の「[Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html)」を参照してください。

# Amazon Chime SDK メッセージングの前提条件について
<a name="messaging-prerequisites"></a>

Amazon Chime SDK メッセージングを使用するには、以下が必要です。
+ プログラムする機能。
+  AWS アカウント。
+ Amazon Chime SDK メッセージングを使用してアプリケーションの IAM ロールを設定するアクセス許可。

ほとんどの場合、以下も必要です。
+ **クライアントアプリケーション** — メッセージング UI を表示し、Amazon Chime SDK を使用してウェブソケットに接続し、状態を管理します。
+ **サーバーアプリケーション** — アイデンティティおよびユーザーを管理します。

# Amazon Chime SDK メッセージングの概念について
<a name="messaging-concepts"></a>

Amazon Chime SDK メッセージングを効果的に使用するには、以下の用語および概念を理解する必要があります。

**AppInstance**  
Amazon Chime SDK メッセージングを使用するには、最初に AppInstance を作成する必要があります。AppInstance には AppInstanceUser およびチャネルが含まれます。通常、アプリケーション用に 1 つの AppInstance を作成します。 AWS アカウントは複数の AppInstances を持つことができます。メッセージ保持およびストリーミング設定などのアプリケーションレベルの設定は AppInstance レベルで行います。AppInstance は、以下の形式の一意の ARN によって識別されます: `arn:aws:chime:region:aws_account_id:app-instance/app_instance_id`。

**AppInstanceUser**  
AppInstanceUser は、メッセージの送信、チャネルの作成、チャネルへの参加などを行うエンティティです。通常、`AppInstanceUser` とアプリケーションユーザーの 1 対 1 のマッピングを作成します。また、`AppInstanceUser` を作成してバックエンドサービスに接続することもできます。これにより、ユーザーはメッセージがバックエンドサービスから送信されたものであることを識別できます。ARN (`arn:aws:chime:region:aws_account_id:app-instance/app_instance_id/user/app_instance_user_id` など) によって識別される AppInstanceUser。`app_instance_user_id` を制御し、ベストプラクティスとして、アプリケーションが既に持っている ID を再利用します。

**チャネル**  
チャネルに `AppInstanceUser` を追加すると、そのユーザーはメンバーになり、メッセージを送受信できるようになります。チャネルは、すべてのユーザーが自分自身をメンバーとして追加できるパブリックにすることも、チャネルのモデレーターだけがメンバーを追加できるプライベートにすることもできます。チャネルメンバーを非表示にすることもできます。非表示になっているメンバーは会話を観察できますが、メッセージを送信することはできず、チャネルメンバーシップには追加されません。

**SubChannel**  
Elastic チャネルのメンバーは、SubChannel と呼ばれる論理コンテナに分割されます。AppInstanceUser を Elastic チャネルに追加すると、ユーザーは SubChannel のメンバーになり、その特定の SubChannel のメッセージを送受信できるようになります。チャネルメンバーシップおよびメッセージは SubChannel レベルです。つまり、ある SubChannel のメンバーが送信したメッセージは、別の SubChannel のメンバーによって受信されません。メンバーは、チャネルの伸縮性をサポートし、エンゲージメントを促進するために、さまざまな SubChannel に移管されます。

**UserMessage**  
チャネルに属している `AppInstanceUser` はユーザーメッセージを送受信できます。`AppInstanceUser` はメッセージを `STANDARD` または `CONTROL` メッセージを送信できます。`STANDARD` メッセージには 4 KB のデータおよび 1 KB のメタデータを含めることができます。`CONTROL` メッセージには 30 バイトのデータしか含めることができません。メッセージは `PERSISTENT` または `NON_PERSISTENT` にすることができます。チャネル履歴から `PERSISTENT` メッセージを取得できます。`NON_PERSISTENT` メッセージは、現在 Amazon Chime SDK メッセージングに接続しているチャネルメンバーのみに表示されます。

**システムメッセージ**  
Amazon Chime SDK は、メンバーがチャネルに参加または退出するなどのイベントに応じてシステムメッセージを生成します。

# Amazon Chime SDK メッセージングアーキテクチャについて
<a name="messaging-architecture"></a>

Amazon Chime SDK メッセージングは、サーバー側およびクライアント側の SDK として使用できます。サーバー側 API は `AppInstance` および `AppInstanceUser` を作成します。さまざまなフックおよび設定を使用して、アプリケーション固有のビジネスロジックおよび検証を追加できます。これを行う方法については、「[Amazon Chime SDK メッセージングでのメッセージングデータのストリーミング](streaming-export.md)」を参照してください。さらに、サーバー側のプロセスが `AppInstanceUser` に代わって API を呼び出したり、バックエンドプロセスを表す専用 `AppInstanceUser` を制御したりできます。

`AppInstanceUser` として表されるクライアント側アプリケーションは、Amazon Chime SDK メッセージング API を直接呼び出すことができます。クライアント側のアプリケーションは、オンライン時に WebSocket プロトコルを使用してメッセージング SDK に接続します。接続すると、参加しているすべてのチャネルからリアルタイムのメッセージを受信します。接続を解除しても、`AppInstanceUser` は追加先のチャネルに属し、SDK の HTTP ベースの API を使用してそれらのチャネルのメッセージ履歴を読み込むことができます。

クライアント側のアプリケーションには、単一の `AppInstanceUser` として API コールを行うアクセス許可があります。IAM 認証情報を 1 つの にスコープするために`AppInstanceUser`、クライアント側のアプリケーションは、 AWS Cognito ID プールまたは小規模なセルフホスト型バックエンド API を介してパラメータ化された IAM ロールを引き受けます。認証の詳細については、「[Amazon Chime SDK メッセージング用のエンドユーザークライアントアプリケーションの認証](auth-client-apps.md)」を参照してください。対照的に、サーバー側のアプリケーションには通常、管理者権限を持つユーザーなど、単一のアプリケーションインスタンスユーザーに紐付けられたアクセス許可や、すべてのアプリインスタンスユーザーに代わって API コールを行うアクセス許可があります。

# Amazon Chime SDK メッセージタイプについて
<a name="msg-types"></a>

メッセージはチャネルを通じて送信します。`STANDARD`、`CONTROL`、または `SYSTEM` メッセージを送信できます。
+ `STANDARD` メッセージのサイズは最大 4 KB で、メタデータを含めることができます。メタデータは任意で、アタッチメントへのリンクを含めるなど、さまざまな方法で使用できます。
+ `CONTROL` メッセージは 30 バイトに制限されており、メタデータは含まれていません。
+ `STANDARD` および `CONTROL` メッセージは永続的または非永続的にすることができます。永続的なメッセージはチャネルの履歴に保存され、`ListChannelMessages` API コールを使用して表示します。永続的でないメッセージは、WebSocket を介して接続されているすべての `AppInstanceUser` に送信されます。
+ Amazon Chime SDK は、メンバーがチャネルに参加または退会するなどのイベントが発生すると、自動 `SYSTEM` メッセージを送信します。

# Amazon Chime SDK メッセージングの開始方法
<a name="getting-started"></a>

このセクションのトピックでは、Amazon Chime SDK メッセージングアプリケーションの構築を開始する方法について説明します。

**Topics**
+ [Amazon Chime SDK メッセージングの AppInstance の作成](create-app-instance.md)
+ [Amazon Chime SDK メッセージングのバックエンドサービスから SDK 呼び出しを行う](call-from-backend.md)
+ [Amazon Chime SDK メッセージング用のエンドユーザークライアントアプリケーションの認証](auth-client-apps.md)
+ [Amazon Chime SDK メッセージングのチャネルの作成](creating-channels.md)
+ [Amazon Chime SDK メッセージングでのメッセージの送信](send-messages.md)
+ [Amazon Chime SDK メッセージングでの ExpirationSettings の使用](expiration.md)
+ [WebSockets を使用して Amazon Chime SDK メッセージングでメッセージを受信する](websockets.md)
+ [Amazon Chime SDK メッセージングでのアタッチメントの設定](configure-attachments.md)

# Amazon Chime SDK メッセージングの AppInstance の作成
<a name="create-app-instance"></a>

Amazon Chime SDK メッセージングを使用するには、まず`AppInstance` AWS アカウントに Amazon Chime SDK を作成する必要があります。

**Topics**
+ [AppInstance の構築](#app-instance-steps)
+ [AppInstanceUser の作成](#create-app-instance-user)

## AppInstance の構築
<a name="app-instance-steps"></a>

**メッセージング用の `AppInstance` を作成するには**

1. CLI で、以下を実行します: `aws chime-sdk-identity create-app-instance --name NameOfAppInstance.`

1. 作成レスポンスで、以下を書き留めます: `AppInstanceArn` および `arn:aws:chime:region: aws_account_id:app-instance/app_instance_id`。

## AppInstanceUser の作成
<a name="create-app-instance-user"></a>

`AppInstance` を作成したら、その `AppInstance` 内に `AppInstanceUser` を作成します。これは通常、ユーザーがアプリケーションに初めて登録またはログインするときに行います。バックエンドサービスに代わって動作する `AppInstanceUser` を作成することもできます。

以下の例では、バックエンド `AppInstanceUser` を作成する方法を示します。

```
aws chime-sdk-identity create-app-instance-user \
    --app-instance-arn "app_instance_arn" \
    --app-instance-user-id "back-end-worker" \
    --name "back-end-worker"
```

作成レスポンスの `AppInstanceUserArn` を書き留めます。以下の書式が使用されます: `arn:aws:chime:region: aws_account_id:app-instance/app_instance_id/user/app_instance_user_id`。この例では、`app_instance_user_id` は「back-end-worker」です。

**注記**  
ベストプラクティスとして、クライアントアプリケーションの `AppInstanceUser` を作成するときは、`AppInstanceUserId` をそのユーザーの既存の一意の ID (アイデンティティプロバイダーの `sub` など) と一致させます。名前は、メッセージ送信者などの一部の API エンティティに添付されるオプションのプレースホルダーです。これにより、メッセージの送信者としても添付されている `AppInstanceUser` ARN から検索する必要がなく、ユーザーの表示名を 1 か所で制御できます。

# Amazon Chime SDK メッセージングのバックエンドサービスから SDK 呼び出しを行う
<a name="call-from-backend"></a>

バックエンドサービスを表すユーザーを作成したら、チャネルを作成し、そのチャネルにメッセージを送信し、そのチャネルからのメッセージを読み取ります。

以下の CLI コマンドを実行して、パブリックチャネルを作成します。

```
aws chime-sdk-messaging create-channel \
    --chime-bearer "app_instance_user_arn" \
    --app-instance-arn "app_instance_arn" \
    --name "firstChannel"
```

このコマンドは、以下の形式の ARN を生成します: `arn:aws:chime:region:aws_account_id:app-instance/app_instance_id/channel/channel_id.`

**Topics**
+ [バックエンドサービスの IAM 認可の仕組み](#how-iam-works)
+ [暗黙的な API 認可について](#api-implicit-auth)
+ [チャネルメッセージの送信と一覧表示](#send-list-msgs)

## バックエンドサービスの IAM 認可の仕組み
<a name="how-iam-works"></a>

前のセクションの CLI コマンドの `chime-bearer` パラメータを書き留めます。チャネルやメッセージなどのリソースを作成したり操作したりするユーザーを識別します。ほぼすべての Amazon Chime SDK メッセージング API は、パラメータとして `chime-bearer` を受け取ります。ただし、`CreateAppInstance` などの開発者だけが呼び出すための API は例外です。

Amazon Chime SDK メッセージング API の IAM アクセス許可には、`chime-bearer` パラメータと一致する `app-instance-user-arn ` が必要です。API によっては、追加の ARN (通常はチャネル ARN) が必要になる場合があります。これにより、上記の例のようなバックエンドサービスの場合、IAM ポリシーは以下の例のようになります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "chime:SendChannelMessage",
            "chime:ListChannelMessages",
            "chime:CreateChannelMembership",
            "chime:ListChannelMemberships",
            "chime:DeleteChannelMembership",
            "chime:CreateChannel",
            "chime:ListChannels",
            "chime:DeleteChannel"
        ],
        "Resource": [
            "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/back-end-worker",
            "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/channel/*"
        ]
    }
}
```

------

`Resource` セクションの `AppInstanceUser` ARN とチャネル ARN を書き留めます。この IAM ポリシーの例では、「back-end-worker」の ID を持つユーザーとして API コールを行うアクセス許可をバックエンドサービスに付与します。バックエンドサービスがアプリケーションを使用するユーザーを呼び出せるようにするには、`app_instance_user_arn` を `arn:aws:chime:region:aws_account_id:app-instance/app_instance_id/user/*` に変更します。

## 暗黙的な API 認可について
<a name="api-implicit-auth"></a>

IAM ポリシーに加えて、Amazon Chime SDK メッセージング API には暗黙的なアクセス許可があります。例えば、`AppInstanceUser` はメッセージを送信したり、ユーザーが属するチャネルのチャネルメンバーシップを一覧表示することしかできません。ただし、`AppInstanceAdmin` に昇格した `AppInstanceUser` は例外です。デフォルトでは、管理者はアプリケーション内のすべてのチャネルへのアクセス許可を持っています。ほとんどのユースケースでは、重要なビジネスロジックを含むバックエンドサービスにのみこれが必要です。

以下の CLI コマンドは、バックエンドユーザーを管理者に昇格させます。

```
aws chime-sdk-identity create-app-instance-admin \
    --app-instance-admin-arn "app_instance_user_arn" \
    --app-instance-arn "app_instance_arn"
```

## チャネルメッセージの送信と一覧表示
<a name="send-list-msgs"></a>

以下の CLI コマンドは、チャネルメッセージを送信します。

```
aws chime-sdk-messaging send-channel-message \
    --chime-bearer "app_instance_user_arn" \
    --channel-arn "channel_arn" \
    --content "hello world" \
    --type STANDARD \
    --persistence PERSISTENT
```

以下の CLI コマンドは、チャネルメッセージを新しい順に一覧表示します。
+ `aws chime list-channel-messages`
+ `aws chime-sdk-messaging list-channel-messages`

```
aws chime-sdk-messaging list-channel-messages \
    --chime-bearer "app_instance_user_arn" \
    --channel-arn "channel_arn"
```

# Amazon Chime SDK メッセージング用のエンドユーザークライアントアプリケーションの認証
<a name="auth-client-apps"></a>

Amazon Chime SDK メッセージングをエンドユーザークライアントアプリケーションから実行することもできます。[Amazon Chime SDK メッセージングのバックエンドサービスから SDK 呼び出しを行う](call-from-backend.md) は create-channel、send-channel-message、list-channel-messages などの API コールを行う方法を説明します。ブラウザおよびモバイルアプリケーションなどのエンドユーザークライアントアプリケーションがこれらの同じ API コールを行います。クライアントアプリケーションは WebSocket 経由で接続して、自分がメンバーになっているチャネルへのメッセージおよびイベントに関するリアルタイムの更新を受信することもできます。このセクションでは、特定のアプリケーションインスタンスユーザーを対象とするクライアントアプリケーションに IAM 認証情報を付与する方法について説明します。エンドユーザーがこれらの認証情報を取得すると、[Amazon Chime SDK メッセージングのバックエンドサービスから SDK 呼び出しを行う](call-from-backend.md) に示す API コールを行うことができます。クライアントアプリケーションの完全なデモを見るには、[https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat) を参照してください。クライアントアプリケーションが属するチャネルからリアルタイムメッセージを受信する方法について詳しくは、「[WebSockets を使用して Amazon Chime SDK メッセージングでメッセージを受信する](websockets.md)」を参照してください。

## エンドユーザーへの IAM 認証情報の付与
<a name="connect-id-provider"></a>

Amazon Chime SDK メッセージングは、 AWS Identity and Access Management (IAM) ポリシーとネイティブに統合され、受信リクエストを認証します。IAM ポリシーは、個々のユーザーができることを定義します。IAM ポリシーは、ユースケースに合わせてスコープダウンされ限定された認証情報を提供するように作成できます。Amazon Chime SDK メッセージングユーザーに対するポリシー作成の詳細については、「[Amazon Chime SDK メッセージングの IAM ロールの例](iam-roles.md)」を参照してください。

既存のアイデンティティプロバイダーをお持ちの場合、既存のアイデンティティを Amazon Chime SDK メッセージングと統合するための以下のオプションがあります。
+ 既存の ID プロバイダーを使用してユーザーを認証し、認証サービスを AWS Security Token Service (STS) と統合して、クライアント用に独自の認証情報供給サービスを作成できます。STS には IAM ロールを引き受けるための API が用意されています。
+ SAML または OpenID と互換性のあるアイデンティティプロバイダーを既にお持ちの場合は、Amazon [Cognito アイデンティティプール](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html)を使用することをお勧めします。これにより、 AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) および [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) への呼び出しが抽象化され取り除かれます。Amazon Cognito は、OpenID や SAML のほか、Facebook、Login with Amazon、Google、Sign in with Apple などのパブリックアイデンティティプロバイダーと統合します。

アイデンティティプロバイダーをお持ちでない場合は、Amazon Cognito ユーザープールの使用を開始できます。Amazon Cognito を Amazon Chime SDK メッセージング機能と共に使用する方法の例については、「[Build chat features into your application with Amazon Chime SDK messaging](https://aws.amazon.com/blogs/business-productivity/build-chat-features-into-your-application-with-amazon-chime-sdk-messaging/)」を参照してください。

あるいは、[AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) を使用して独自の認証情報供給サービスを作成したり、独自のアイデンティティプロバイダーを構築したりすることもできます。

**STS を使用して認証情報を供給する**  
ActiveDirectory LDAP などの IDP を既にお持ちで、カスタムの認証情報供給サービスを実装したり、認証されていない会議参加者にチャットへのアクセス許可を付与したりする場合は、[AWS STS AssumeRole API](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) を使用できます。これを行うには、まず Amazon Chime SDK メッセージング SDK ロールを作成します。このロールの作成の詳細については、「[IAM ユーザーにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)」を参照してください。

IAM ロールには、アプリケーションが使用する Amazon Chime SDK メッセージングアクションに対する以下のようなアクセス許可があります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "chime:GetMessagingSessionEndpoint"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "chime:SendChannelMessage",
                "chime:ListChannelMessages",
                "chime:CreateChannelMembership",
                "chime:ListChannelMemberships",
                "chime:DeleteChannelMembership",
                "chime:CreateChannelModerator",
                "chime:ListChannelModerators",
                "chime:DescribeChannelModerator",
                "chime:CreateChannel",
                "chime:DescribeChannel",
                "chime:ListChannels",
                "chime:DeleteChannel",
                "chime:RedactChannelMessage",
                "chime:UpdateChannelMessage",
                "chime:Connect",
                "chime:ListChannelBans",
                "chime:CreateChannelBan",
                "chime:DeleteChannelBan",
                "chime:ListChannelMembershipsForAppInstanceUser",
                "chime:AssociateChannelFlow",
                "chime:DisassociateChannelFlow",
                "chime:GetChannelMessageStatus"
            ],
            "Resource": [
            "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/my_applications_user_id",
            "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/channel/*"
    ]
        }
    ]
}
```

------

この例では、このロールを *ChimeMessagingSampleAppUserRole* と呼びます。

ユーザー ARN リソースの *ChimeMessagingSampleAppUserRole* ポリシー `${my_application_user_id}` のセッションタグに注意してください。このセッションタグは [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API コールでパラメータ化され、単一ユーザーのアクセス許可に返される認証情報を制限します。

[https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) および [https://docs.aws.amazon.com/STS/latest/APIReference/API_TagSesstion.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_TagSesstion.html) API は、IAM ユーザーなど既に認証されている IAM エンティティを使用して呼び出されます。API は [AWS Lambda 実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)など、別の IAM ロールから呼び出すこともできます。その IAM アイデンティティには *ChimeMessagingSampleAppUserRole* で `AssumeRole` および `TagSession` を呼び出すためのアクセス許可が必要です。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
         {
            "Effect": "Allow",
            "Action": [ 
                "sts:AssumeRole",
                "sts:TagSession"
                ],
            "Resource": "arn:aws:iam::123456789012:role/ChimeMessagingSampleAppUserRole"
        }
    ]
}
```

------

 この例では、このロールを *ChimeSampleAppServerRole* と呼びます。

`ChimeMessagingSampleAppServerRole` で [STS AssumeRole API](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) を呼び出すことを許可する信頼ポリシーを使用して `ChimeMessagingSampleAppUserRole` を設定する必要があります。IAM ロールでの信頼ポリシーの使用の詳細については、「[How to use trust policies with IAM roles](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/)」を参照してください。 AWS IAM ロールコンソールを使用して、このポリシーを に追加できます`ChimeMessagingSampleAppUserRole`。以下の例は、標準的な信頼関係を示しています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/ChimeMessagingSampleAppServerRole"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

 サンプルデプロイでは、[Amazon EC2](https://aws.amazon.com/ec2/) インスタンス、または AWS Lambda が で起動されます`ChimeMessagingSampleAppServerRole`。その後、サーバーは以下を実行します。

1. クライアントの認証情報受信リクエストに対して、アプリケーション固有の認可を実行します。

1. `${aws:PrincipalTag/my_applications_user_id}` をパラメータ化するタグを使用して、`ChimeMessagingSampleAppUserRole` で STS `AssumeRole` を呼び出します。

1. `AssumeRole` 呼び出しで返された認証情報をユーザーに転送します。

以下の例は、ステップ 2 のロールを引き受けるための CLI コマンドを示しています。

`aws sts assume-role --role-arn arn:aws:iam::my_aws_account_id:role/ChimeMessagingSampleAppUserRole --role-session-name demo --tags Key=my_applications_user_id,Value=123456789 ` 

# Amazon Chime SDK メッセージングのチャネルの作成
<a name="creating-channels"></a>

ユーザーおよびエンドユーザーはチャネルを作成できます。作成したら、ユーザーまたはエンドユーザーもチャネルにメンバーを追加する必要があります。チャネルを作成するためのサンプルコードは、[GitHub のサンプルアプリケーション](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat)で入手できます。

チャネルの作成およびメンバーの追加の詳細については、以下を参照してください。
+  [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html) 
+  [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) 

# Amazon Chime SDK メッセージングでのメッセージの送信
<a name="send-messages"></a>

メッセージを送信するには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html) API を使用します。サンプルコードは [GitHub のサンプルアプリケーション](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat)で入手できます。

# Amazon Chime SDK メッセージングでの ExpirationSettings の使用
<a name="expiration"></a>

`AppInstanceUser` または `Channel` を作成する際に、`ExpirationSettings` を使用してそれらのリソースを自動的に削除するように設定できます。`ExpirationSettings` はストレージコストを削減し、リソース制限の超過という問題を防ぐのに役立ちます。例えば、未使用のチャネルを 7 日後に削除したり、テスト目的でのみ呼び出された `AppInstanceUser` を削除したりできます。

`AppInstanceUser` では、ユーザーの作成時刻に基づいて有効期限を指定します。`Channel` では、チャネルの作成時刻または最終メッセージ時刻に基づいて有効期限を指定します。後者の場合、メッセージアクティビティを使用して自動削除をカスタマイズできます。

**重要**  
リソースの有効期限が切れるとすぐに、`ExpirationSettings` はそのリソースを削除するバックグラウンドプロセスを開始します。このプロセスには通常 6 時間かかりますが、この時間は変わる場合があります。  
期限切れとなってもまだ削除されていない `AppInstanceUsers` および `Channels` は、引き続き有効かつアクティブと表示されます。有効期限の設定は更新または削除でき、変更内容はシステムによって反映されます。

**Topics**
+ [ExpirationSettings の設定](#create-expiration)
+ [期限切れのリソース削除のAWS CloudTrail イベント](#ct-events)

## ExpirationSettings の設定
<a name="create-expiration"></a>

以下のセクションでは、`AppInstanceUser` または `Channel` の `ExpirationSettings` の設定方法について説明します。

### リソース作成時の ExpirationSettings の設定
<a name="configure-on-create"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateAppInstanceUser.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateAppInstanceUser.html) または [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html) API を実行するときに `ExpirationSettings` を設定できます。`ExpirationSettings` パラメータを設定する場合は、次の IAM アクセス許可を付与する必要があります。
+ `AppInstanceUser` を作成する場合は `chime:PutAppInstanceUserExpirationSettings`。
+ `Channel` を作成する場合は `chime:PutChannelExpirationSettings`。

次の例では、 CLI AWS を使用して、1 日後に期限切れ`AppInstanceUser`になる を作成します。

```
aws chime-sdk-identity create-app-instance-user \
--app-instance-arn "app_instance_arn" \
--app-instance-user-id "backend-worker" \
--name "backend-worker" \
--expiration-settings '{
            "ExpirationDays": 1,
            "ExpirationCriterion": "CREATED_TIMESTAMP"
        }'
```

次の例では、 CLI AWS を使用して、最後にメッセージを受信してから 1 日後に期限切れ`Channel`になる を作成します。

```
aws chime-sdk-messaging create-channel \
--chime-bearer "app_instance_user_arn" \
--app-instance-arn "app_instance_arn" \
--name "firstChannel" \
--expiration-settings '{
            "ExpirationDays": 1,
            "ExpirationCriterion": "LAST_MESSAGE_TIMESTAMP"
        }'
```

### Put API を使用した ExpirationSettings の設定
<a name="configure-on-put"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_PutAppInstanceUserExpirationSettings.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_PutAppInstanceUserExpirationSettings.html) および [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelExpirationSettings.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelExpirationSettings.html) API を使用すると、`ExpirationSettings` を作成、更新、削除することもできます。

次の例は、 CLI AWS を使用して `AppInstanceUser`の を更新する方法を示しています`ExpirationSettings`。

```
aws chime-sdk-identity put-app-instance-user-expiration-settings \
--app-instance-user-arn "app_instance_user_arn" \
--expiration-settings '{
            "ExpirationDays": 30,
            "ExpirationCriterion": "CREATED_TIMESTAMP"
        }'
```

次の例は、 CLI AWS を使用してチャネルの を削除する方法を示しています`ExpirationSettings`。

```
aws chime-sdk-messaging put-channel-expiration-settings \
--chime-bearer "app_instance_user_arn" \
--channel-arn "channel_arn"
```

## 期限切れのリソース削除のAWS CloudTrail イベント
<a name="ct-events"></a>

システムは、期限切れのリソースを削除すると、 AWS CloudTrail に `ExpireAppInstanceUser`または `ExpireChannel`イベントを送信します。イベントの種類は、削除されたアセットの種類によって異なります。

次の例は、`AppInstanceUser` イベントを示しています。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "chime.amazonaws.com"
    },
    "eventTime": "2023-03-15T00:00:00Z",
    "eventSource": "chime.amazonaws.com",
    "eventName": "ExpireAppInstanceUser",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "chime.amazonaws.com",
    "userAgent": "chime.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "12345678-1234-1234-1234-123456789012",
    "readOnly": false,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::Chime::AppInstanceUser",
            "ARN": "arn:aws:chime:us-east-1:123456789012:app-instance/app-instance-id/user/user-id"
        }
    ],
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails": {
        "reason": "AppInstanceUser deleted due to expiration settings."
    },
    "eventCategory": "Management"
}
```

# WebSockets を使用して Amazon Chime SDK メッセージングでメッセージを受信する
<a name="websockets"></a>

 [Amazon Chime JS SDK](https://github.com/aws/amazon-chime-sdk-js) を使用し WebSocket を使用してメッセージを受信することも、任意の WebSocket クライアントライブラリを使用することもできます。

WebSocket の使用を開始するには、以下のトピックを記載されている順序で実行してください。

**Topics**
+ [IAM ポリシーの定義](#define-iam-policy)
+ [エンドポイントの取得](#retrieve-endpoint)
+ [接続の確立](#connect-api)
+ [プリフェッチを使用してチャネルの詳細を配信する](#prefetch)
+ [イベントの処理](#process-events)

## IAM ポリシーの定義
<a name="define-iam-policy"></a>

まず、WebSocket 接続を確立するアクセス許可を付与する IAM ポリシーを定義します。以下のサンプルポリシーは、WebSocket 接続を確立する `AppInstanceUser` アクセス許可を付与します。

```
"Version": "2012-10-17",		 	 	 
"Statement": [
  {
    "Effect": "Allow",
    "Action: [
      "chime:Connect"
    ],
    "Resource": [
      "arn:aws:chime:region:{aws_account_id}:app-instance/{app_instance_id}/user/{app_instance_user_id}"
    ]
 },
 {
    "Effect": "Allow",
    "Action: [
      "chime:GetMessagingSessionEndpoint"
    ],
    "Resource": [
      "*"
    ]
 }
 ]
}
```

## エンドポイントの取得
<a name="retrieve-endpoint"></a>

以下の手順では、WebSocket 接続で使用されるエンドポイントを取得する方法について説明します。

1. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html) API を使用して WebSocket エンドポイントを取得します。

1. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html) API によって返された URL を使用して、署名バージョン 4 の署名付き WebSocket URL を構築します。その際にヘルプが必要な場合は、[接続の確立](#connect-api) の指示に従ってください。
**注記**  
WebSocket URL の形式は以下のとおりです: `id.region.ws-messaging.chime.aws`

## 接続の確立
<a name="connect-api"></a>

 エンドポイントを取得したら、接続 API を使用して Amazon Chime SDK バックエンドサーバーへの WebSocket 接続を確立し、`AppInstanceUser` からのメッセージを受信します。リクエストに署名するには、 AWS 署名バージョン 4 を使用する必要があります。リクエストへの署名に関する情報については、「[署名バージョン 4 を使用した AWS リクエストへの署名](https://docs.aws.amazon.com/general/latest/gr/Signature Version 4_signing.html)」を参照してください。

**注記**  
エンドポイントを取得するには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html) API を呼び出します。任意の WebSocket クライアントライブラリを使用してエンドポイントに接続できます。

**リクエストの構文**

```
GET /connect
?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=AKIARALLEXAMPLE%2F20201214%2Fregion%2Fchime%2Faws4_request
&X-Amz-Date=20201214T171359Z
&X-Amz-Expires=10
&X-Amz-SignedHeaders=host
&sessionId={sessionId}
&userArn={appInstanceUserArn}
&X-Amz-Signature=db75397d79583EXAMPLE
```

**URI リクエストパラメータ**

URI リクエストクエリパラメータはすべて URL でエンコードされている必要があります。

**X-Amz-Algorithm**

 AWS 署名のバージョンと、署名の計算に使用したアルゴリズムを識別します。Amazon Chime SDK は AWS 署名バージョン 4 認証のみをサポートしているため、この値は `AWS4-HMAC-SHA256` です。

**X-Amz-Credential**

アクセスキー ID に加えて、このパラメータは、署名が有効な AWS リージョンとサービス、つまりスコープも提供します。この値は、署名の計算で使用するスコープと一致する必要があります。このパラメータ値の一般的な形式は次のとおりです。

`<yourAccessKeyId>/<date>/<awsRegion>/<awsService >/aws4_request`

例えば、次のようになります。

`AKIAIOSFODNN7EXAMPLE/20201214/us-east-1/chime/aws4_request`

**X-Amz-Date**

日付と時刻の形式は ISO 8601 規格に準拠している必要があるため、`yyyyMMddTHHmmssZ` という形式にする必要があります。例えば、**2020 年 8 月 1 日 15:32:41.982-700** を協定世界時 (UTC) に変換し、`20200801T083241Z` として送信する必要があります。

**X-Amz-Signed-Headers**

署名の計算に使用したヘッダーを一覧表示します。署名計算には次のヘッダーが必要です。
+ HTTP ホストヘッダー。
+ リクエストに追加する予定のすべての x-amz-\$1 ヘッダー。

**注記**  
セキュリティを強化するため、リクエストに含める予定のすべてのリクエストヘッダーに署名します。

**X-Amz-Signatures**

リクエストを認証するための署名を指定します。この署名は、Amazon Chime SDK が計算する署名と一致する必要があります。一致しない場合、Amazon Chime SDK はリクエストを拒否します。例えば、`733255ef022bec3f2a8701cd61d4b371f3f28c9f19EXAMPLEd48d5193d7`。

**X-Amz-Security-Token**

Security Token Service から取得した認証情報を使用する場合のオプションの認証情報パラメータ。このサービスの詳細については、「[https://docs.aws.amazon.com/STS/latest/APIReference/](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html)」を参照してください。

**SessionId**

確立中の WebSocket 接続の一意の ID を示します。

**UserArn**

接続を確立しようとしている `AppInstanceUser` の ID を示します。値は、`AppInstanceUser` の ARN でなければなりません。例: `arn:aws:chime:us%2Deast%2D1:123456789012:app%2Dinstance/694d2099%2Dcb1e%2D463e%2D9d64%2D697ff5b8950e/user/johndoe` 

## プリフェッチを使用してチャネルの詳細を配信する
<a name="prefetch"></a>

WebSocket 接続を確立する際に、`CHANNEL_DETAILS` イベントを配信するようにクエリパラメータで `prefetch-on=connect` を指定できます。プリフェッチ機能は接続 API に付属しており、この機能によりユーザーは API を余分に呼び出さなくても充実したチャットビューを表示できます。ユーザーは次の操作を実行できます。
+ 直近のチャネルメッセージのプレビューとそのタイムスタンプを表示する。
+ チャネルのメンバーを表示する。
+ チャネルの未読マーカーを表示する。

ユーザーがプリフェッチパラメータを指定して接続すると、接続が確立されたことを示すセッション確立イベントがユーザーに届きます。その後、ユーザーは最大 50 件の `CHANNEL_DETAILS` イベントを受信します。ユーザーのチャネル数が 50 個未満の場合、接続 API は `CHANNEL_DETAILS` イベントを介してすべてのチャネルをプリフェッチします。ユーザーのチャネルが 50 個を超える場合、API は未読メッセージと最新の `LastMessageTimestamp` 値を含む上位 50 個のチャネルをプリフェッチします。`CHANNEL_DETAILS` イベントはランダムな順序で到着し、ユーザーは 50 個のチャネルすべてのイベントを受信します。

また、プリフェッチは `ChannelMessages` と `ChannelMemberships` に対して以下を返します。
+ **ChannelMessages** – [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMessageSummary.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMessageSummary.html) オブジェクトのリスト。降順で `CreatedTimestamp` によって順序付けられます。ユーザーに表示されている最新 20 件のメッセージのみが含まれます。現在のユーザーには表示されないターゲットを絞ったメッセージがチャネルにある場合、返されるメッセージは 20 件未満になる可能性があります。`ChannelMessagesHasMore` ブール値は true に設定され、メッセージが他にもあることを示します。ソフト制限。 AWS アカウントレベルで調整できます。
+ **ChannelMemberships** – [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMembershipSummary.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMembershipSummary.html) オブジェクトのリスト 最大 30 人のチャネルメンバーが含まれます。ソフト制限、 AWS アカウントレベルで調整可能。

次の例では、`prefetch-on=connect` の使用方法を示します。

```
GET /connect
?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=AKIARALLEXAMPLE%2F20201214%2Fregion%2Fchime%2Faws4_request
&X-Amz-Date=20201214T171359Z
&X-Amz-Expires=10
&X-Amz-SignedHeaders=host
&sessionId=sessionId
&prefetch-on=connect
&userArn=appInstanceUserArn
&X-Amz-Signature=db75397d79583EXAMPLE
```

この例は、1 つのチャネルのレスポンスを示しています。50 個のチャネルすべてについてのレスポンスが届きます。

```
{
   "Headers": { 
        "x-amz-chime-event-type": "CHANNEL_DETAILS", 
        "x-amz-chime-message-type": "SYSTEM" 
        },
   "Payload": JSON.stringify"({
        Channel: [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelSummary.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelSummary.html) 
        ChannelMessages: List of [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMessageSummary.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMessageSummary.html)  
        ChannelMemberships: List of [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMembershipSummary.html ](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMembershipSummary.html )
        ReadMarkerTimestamp: Timestamp 
        ChannelMessagesHasMore: Boolean 
    })
}
```

## イベントの処理
<a name="process-events"></a>

`AppInstanceUser` が接続を確立した後にメッセージを受信するには、メッセージをチャネルに追加する必要があります。そのためには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) API を使用します。

**注記**  
`AppInstanceUser` は、自分が属しているすべてのチャネルのメッセージを常に受信します。`AppInstance` ユーザーが接続を切断すると、メッセージングは停止します。

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) API を使用してメッセージを明示的に追加しない限り、`AppInstanceAdmin` および `ChannelModerator` はチャネルでメッセージを受信しません。

以下のトピックでは、イベントを処理する方法について説明します。

**Topics**
+ [メッセージの構造について](#message-structures)
+ [切断への対応](#handle-disconnects)

### メッセージの構造について
<a name="message-structures"></a>

受信するすべての WebSocket メッセージは、以下の形式に従います。

```
{
   "Headers": {"key": "value"},
   "Payload": "{\"key\": \"value\"}"
}
```

**ヘッダー**  
Amazon Chime SDK メッセージングでは、以下のヘッダーキーを使用します。
+ `x-amz-chime-event-type`
+ `x-amz-chime-message-type`
+ `x-amz-chime-event-reason`

次のセクションでは、ヘッダーで有効な値およびペイロードを示して説明します。

**ペイロード**  
Websocket メッセージは JSON 文字列を返します。JSON 文字列の構造は `x-amz-event-type` ヘッダーによって異なります。以下の表に、有効な `x-amz-chime-event-type` 値とペイロードを示します。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/chime-sdk/latest/dg/websockets.html)

**x-amz-chime-message-type**  
以下の表に `x-amz-chime-message-type` メッセージタイプを示します。


| メッセージタイプ | 説明 | 
| --- | --- | 
| `STANDARD` | Websocket が STANDARD チャネルメッセージを受信すると送信されます。 | 
| `CONTROL` | WebSocket が CONTROL チャネルメッセージを受信したときに送信されます。 | 
| `SYSTEM` | Amazon Chime SDK メッセージングによって送信されるその他すべての Websocket メッセージ。 | 

**x-amz-chime-event-reason**  
これは特定のユースケースでサポートされるオプションのヘッダーです。ヘッダーには、特定のイベントを受信した理由に関する情報が表示されます。


| イベント理由 | 説明 | 
| --- | --- | 
| subchannel\$1DELETED | Elastic チャネルモデレーターが受信した `DELETE_CHANNEL_MEMBERSHIP` イベント。メンバーシップバランシングにより属していたサブチャネルが削除された後、モデレーターにのみ表示されます。 | 

### 切断への対応
<a name="handle-disconnects"></a>

WebSocket は、ネットワーク接続の変化や認証情報の有効期限が切れると切断されることがあります。ユーザーが WebSocket を開くと、Amazon Chime SDK からメッセージングクライアントに定期的に ping が送信され、接続状態の維持が確認されます。接続が終了すると、クライアントは WebSocket クローズコードを受信します。クローズコードによっては、クライアントが再接続できる場合とできない場合があります。次の表は、クライアントが再接続に使用できるクローズコードを示しています。

1000～4000 のクローズコードについては、次のメッセージの場合にのみ再接続してください。


| クローズコード | 再接続可能 | Reason | 
| --- | --- | --- | 
| 1001 | はい | 正常なクローズ | 
| 1006 | はい | 異常なクローズ | 
| 1011 | はい | 内部サーバーエラー | 
| 1012 | はい | サービスの再起動 | 
| 1013 | はい | 後でもう一度試してみてください | 
| 1014 | はい | サーバーは、ゲートウェイまたはプロキシとして機能しており、上流サーバーから無効な応答を受信しました。これは 502 の HTTP ステータスコードに似ています。 | 

4XXX コードの場合は、常に再接続できます。ただし、次のメッセージを除きます。


| クローズコード | 再接続可能 | Reason | 
| --- | --- | --- | 
| 4002 | いいえ | クライアント自身によるクローズ | 
| 4003 | いいえ | Forbidden | 
| 4401 | いいえ | 権限がありません | 

アプリケーションが再接続にクローズコードを使用する場合、アプリケーションには、次の動作が求められます。

1. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html) API を再度呼び出して、新しいベース URL を取得します。

1. IAM 認証情報の有効期限が切れている場合は更新する。

1. WebSocket を介して接続する。

amazon-chime-sdk-js ライブラリを使用して [needsRefresh()](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html#needsRefresh-property) プロパティと [refresh()](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html#refresh-property) メソッドを実装すると、上記の操作を行えます。有効なコード例については、次を参照してください: [https://github.com/aws-samples/amazon-chime-sdk/blob/dc11c4c76c78d28f618577706bba2087919a5635/apps/chat/src/providers/AuthProvider.jsx\$1L93-L101](https://github.com/aws-samples/amazon-chime-sdk/blob/dc11c4c76c78d28f618577706bba2087919a5635/apps/chat/src/providers/AuthProvider.jsx#L93-L101)

# Amazon Chime SDK メッセージングでのアタッチメントの設定
<a name="configure-attachments"></a>

Amazon Chime SDK では、メッセージのアタッチメントに独自のストレージを使用し、メッセージのメタデータとして含めることができます。Amazon Simple Storage Service (S3) は、アタッチメントの使用を開始する最も簡単な方法です。

**S3 をアタッチメントに使用するには**

1. アタッチメントを保存する S3 バケットを作成します。

1. Amazon Chime SDK ユーザーが S3 バケットからアタッチメントをアップロード、ダウンロード、削除できるようにするバケットの IAM ポリシーを作成します。

1. アイデンティティプロバイダーが使用する IAM ロールを作成して、アタッチメント用の認証情報をユーザーに供給します。

[サンプルアプリケーション](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat)には、Amazon S3、Amazon Cognito、および Amazon Chime SDK を使用してこれを行う方法の例が示されています。

# Amazon Chime SDK メッセージングのシステムメッセージについて
<a name="system-messages"></a>

Amazon Chime SDK は、チャネル内で発生するイベントについて、接続されているすべてのクライアントにシステムメッセージを送信します。イベントは以下のとおりです。
+ `UPDATE_CHANNEL` — このイベントは、名前やメタデータなどのチャネルの詳細が更新されたことを示します。
+ `DELETE_CHANNEL` — このイベントは、メッセージ、メンバーシップ、モデレーター、アクセス禁止など、チャネルおよびそのすべてのデータが削除されることを意味します。
+ `CREATE_CHANNEL_MEMBERSHIP` — このイベントは、特定の `AppInstanceUser` がチャネルにメンバーとして追加されたことを示します。イベントには新しい `AppInstanceUser` の詳細も含まれています。
+ `DELETE_CHANNEL_MEMBERSHIP` — このイベントは、`AppInstanceUser` がチャネルから削除されたことを示します。イベントには削除された `AppInstanceUser` 詳細も含まれています。
+ `UPDATE_CHANNEL_MEMBERSHIP` — このイベントは Elastic チャネルにのみ適用されます。このイベントは、メンバーシップバランシングが `AppInstanceUser` をあるサブチャネルから別のサブチャネルに移管したことを意味します。このイベントには、`AppInstanceUser` の詳細に加えて、`AppInstanceUser` の移管先のサブチャネルに関する情報も含まれています。

# Amazon Chime SDK メッセージングの IAM ロールの例
<a name="iam-roles"></a>

ユーザーが Amazon Chime SDK のメッセージング機能にアクセスするには、サインイン時にユーザーに認証情報を提供するための IAM ロールおよびポリシーを定義する必要があります。IAM ポリシーは、ユーザーがアクセスできるリソースを定義します。

このセクションの例では、ニーズに合わせて調整できる基本的なポリシーを示しています。ポリシーの仕組みの詳細については、「[Amazon Chime SDK メッセージングのバックエンドサービスから SDK 呼び出しを行う](call-from-backend.md)」を参照してください。

この例は、Amazon Chime SDK メッセージングを使用してアプリケーションを構築する開発者向けのポリシーを示しています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "chime:CreateAppInstance",
                "chime:DescribeAppInstance",
                "chime:ListAppInstances",
                "chime:UpdateAppInstance",
                "chime:DeleteAppInstance",
                "chime:CreateAppInstanceUser",
                "chime:DeleteAppInstanceUser",
                "chime:ListAppInstanceUsers",
                "chime:UpdateAppInstanceUser",
                "chime:DescribeAppInstanceUser",
                "chime:CreateAppInstanceAdmin",
                "chime:DescribeAppInstanceAdmin",
                "chime:ListAppInstanceAdmins",
                "chime:DeleteAppInstanceAdmin",
                "chime:PutAppInstanceRetentionSettings",
                "chime:GetAppInstanceRetentionSettings",
                "chime:PutAppInstanceStreamingConfigurations",
                "chime:GetAppInstanceStreamingConfigurations",
                "chime:DeleteAppInstanceStreamingConfigurations",
                "chime:TagResource",
                "chime:UntagResource",
                "chime:ListTagsForResource",
                "chime:CreateChannelFlow",
                "chime:UpdateChannelFlow",
                "chime:DescribeChannelFlow",
                "chime:DeleteChannelFlow",
                "chime:ListChannelFlows",
                "chime:ListChannelsAssociatedWithChannelFlow",
                "chime:ChannelFlowCallback"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

この例は、Amazon Chime SDK のユーザーアクションへのアクセスをユーザーに許可するポリシーを示しています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "chime:GetMessagingSessionEndpoint",
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "chime:CreateChannel",
                "chime:DescribeChannel",
                "chime:DeleteChannel",
                "chime:UpdateChannel",
                "chime:ListChannels",
                "chime:Listsubchannels",
                "chime:ListChannelMembershipsForAppInstanceUser",
                "chime:DescribeChannelMembershipForAppInstanceUser",
                "chime:ListChannelsModeratedByAppInstanceUser",
                "chime:DescribeChannelModeratedByAppInstanceUser",
                "chime:UpdateChannelReadMarker",
                "chime:CreateChannelModerator",
                "chime:DescribeChannelModerator",
                "chime:ListChannelModerators",
                "chime:DeleteChannelModerator",
                "chime:SendChannelMessage",
                "chime:GetChannelMessage",
                "chime:DeleteChannelMessage",
                "chime:UpdateChannelMessage",
                "chime:RedactChannelMessage",
                "chime:ListChannelMessages",
                "chime:CreateChannelMembership",
                "chime:DescribeChannelMembership",
                "chime:DeleteChannelMembership",
                "chime:ListChannelMemberships",
                "chime:CreateChannelBan",
                "chime:DeleteChannelBan",
                "chime:ListChannelBans",
                "chime:DescribeChannelBan",
                "chime:Connect",
                "chime:AssociateChannelFlow",
                "chime:DisassociateChannelFlow",
                "chime:GetChannelMessageStatus"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/app_instance_user_id",
                "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/channel/*"
            ]
        }
    ]
}
```

------

この例は、Amazon Chime SDK のユーザーアクションへの最小限のアクセスをユーザーに与えるポリシーを示しています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "chime:GetMessagingSessionEndpoint",
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "chime:ListChannels",
                "chime:DescribeChannel",
                "chime:ListChannelMembershipsForAppInstanceUser",
                "chime:DescribeChannelMembershipForAppInstanceUser",
                "chime:ListChannelsModeratedByAppInstanceUser",
                "chime:DescribeChannelModeratedByAppInstanceUser",
                "chime:SendChannelMessage",
                "chime:GetChannelMessage",
                "chime:ListChannelMessages",
                "chime:Connect"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/app_instance_user_id",
                "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/channel/*"
            ]
        }
    ]
}
```

------

この例は、`AppInstanceUser` の WebSocket 接続を確立するためのポリシーを示しています。WebSocket 接続の詳細については、「[WebSockets を使用して Amazon Chime SDK メッセージングでメッセージを受信する](websockets.md)」を参照してください。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
     "Effect": "Allow",
     "Action": [
             "chime:Connect"
            ],
     "Resource": [
             "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/app_instance_user_id"
         ]
      }
   ]
}
```

------

# ロールごとの権限について
<a name="auth-by-role"></a>

このトピックの表は、アプリケーションインスタンスのユーザーがロールに応じて実行できるアクションを示しています。

**凡例**
+ **[許可]** — IAM ポリシーに正しいアクション/リソースコンテキストが指定されていれば、正常に実行できます。
+ **[制限付きで許可]** — IAM ポリシーに正しいアクション/リソースコンテキストが指定されている場合、特定の条件を満たしていればアクションを正常に実行することができます。
+ **[拒否]** — IAM ポリシーで正しいアクション/リソースコンテキストが指定されていても、バックエンドによってブロックされます。

**Topics**
+ [AppInstanceAdmin](#appinstanceadmin)
+ [ChannelModerator](#channelmoderator)
+ [メンバー](#member)
+ [非メンバー](#non-member)

## AppInstanceAdmin
<a name="appinstanceadmin"></a>

アプリケーションインスタンスの管理者は、自分が管理者であるアプリケーションインスタンス内のチャネルに対してアクションを実行できます。


| API 名 | 許可または拒否 | メモ | 
| --- | --- | --- | 
| `UpdateChannel` | 制限付きで許可 |  一度設定した ElasticChannelConfiguration は更新できません | 
| `DeleteChannel` | 許可 |  | 
| `DescribeChannel` | 許可 |  | 
| `ListChannel` | 許可 |  | 
| `ListChannelMembershipsForAppInstanceUser` | 許可されています | [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax) に別の `AppInstanceUser` を入力することもできます。 | 
| `DescribeChannelMembershipForAppInstanceUser` | 許可されています | [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax) に別の `AppInstanceUser` を入力することもできます。 | 
| `ListChannelsModeratedByAppInstanceUser` | 許可されています | [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax) に別の AppInstanceUser を入力することもできます。 | 
| `DescribeChannelModeratedByAppInstanceUser` | 許可されています | [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax) に別の A`ppInstanceUser` を入力することもできます。Elastic チャネルでは許可されません。 | 
| `CreateChannelMembership` | 許可 |  | 
| `DescribeChannelMembership` | 許可 |  | 
| `ListChannelMembership` | 許可 |  | 
| `DeleteChannelMembership` | 許可されています |  | 
| `SendChannelMessage` | 制限付きで許可 | まず [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateChannelMembership.html) を使用して自分のメンバーシップを作成し、次に API を呼び出す必要があります。 | 
| `GetChannelMessage` | 許可 |  | 
| `ListChannelMessage` | 許可 |  | 
| `DeleteChannelMessage` | 許可 |  | 
| `RedactChannelMessage` | 許可されています |  | 
| `UpdateChannelMessage` | 制限付きで許可 | 自分のメッセージのみを編集できます。 | 
| `CreateChannelModerator` | 許可 |  | 
| `DeleteChannelModerator` | 許可 |  | 
| `DescribeChannelModerator` | 許可 |  | 
| `ListChannelModerator` | 許可されています |  | 
| `CreateChannelBan` | 制限付きで許可 | 禁止する `AppInstanceUser` は、そのチャネルの `AppInstanceAdmin` またはモデレーターであってはなりません。 | 
| `DeleteChannelBan` | 制限付きで許可 |  | 
| `DescribeChannelBan` | 許可 |  | 
| `ListChannelBan` | 許可されています |  | 
| `UpdateChannelReadMarker` | 制限付きで許可 | 非 Elastic チャネルの場合は、まず [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) API を使用して自分のメンバーシップを作成し、次に API を呼び出す必要があります。 Elastic チャネルでは許可されません。  | 
|  `GetChannelMessage`  |  制限付きで許可 | 送信済みメッセージにのみ許可されます。メッセージの送信者でない限り、チャネルフローで処理中のメッセージでは許可されません。 | 
| `ListChannelMessages` |  許可されています |  | 
| `DeleteChannelMessage` |  制限付きで許可 | 送信済みメッセージにのみ許可されます。 | 
| `RedactChannelMessage` |  制限付きで許可 | 送信済みメッセージにのみ許可されます。 | 
| `UpdateChannelMessage` |  制限付きで許可 | 自分の送信したメッセージのみを編集できます。 | 
| `AssociateChannelFlow` |  許可 |  | 
| `DisassociateChannelFlow` |  許可されています |  | 
| `GetChannelMessageStatus` |  制限付きで許可 | 自分のメッセージのメッセージステータスのみを取得できます。 | 
|  `ListSubChannels`  | 許可されています |  | 

## ChannelModerator
<a name="channelmoderator"></a>

チャネルモデレーターは、自分がモデレーターの役割を担っているチャネルでのみアクションを実行できます。

**注記**  
`AppInstanceAdmin` であるモデレーターは、そのロールで許可されているチャネルでアクションを実行できます。


| API 名 | 許可または拒否 | メモ | 
| --- | --- | --- | 
| `UpdateChannel` | 許可されています |  一度設定した ElasticChannelConfiguration は更新できません | 
| `DeleteChannel` | 許可されています  |  | 
| `DescribeChannel` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `ListChannel` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `ListChannelMembershipsForAppInstanceUser` | 制限付きで許可 | ARN は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) 値としてのみ使用できます。 | 
| `DescribeChannelMembershipForAppInstanceUser` | 制限付きで許可 | ARN は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) 値としてのみ使用できます。 | 
| `ListChannelsModeratedByAppInstanceUser` | 制限付きで許可 | ARN は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) 値としてのみ使用できます。 | 
| `DescribeChannelModeratedByAppInstanceUser` | 制限付きで許可 | [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) に別の AppInstanceUser を入力することもできます。 | 
| `CreateChannelMembership` | 許可 |  | 
| `DescribeChannelMembership` | 許可 |  | 
| `ListChannelMembership` | 許可 |  | 
| `DeleteChannelMembership` | 許可されています |  | 
| `SendChannelMessage` | 制限付きで許可 | まず [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) API を使用して自分のメンバーシップを作成し、次に `SendChannelMessage` API を呼び出す必要があります。 | 
| `GetChannelMessage` | 許可 |  | 
| `ListChannelMessage` | 許可されています |  | 
| `DeleteChannelMessage` | 拒否 |  | 
| `RedactChannelMessage` | 許可されています |  | 
| `UpdateChannelMessage` | 制限付きで許可 | 自分のメッセージのみを更新できます。 | 
| `CreateChannelModerator` | 許可されています | まず [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) API を使用して自分のメンバーシップを作成し、次に `CreateChannelModerator` API を呼び出す必要があります。 | 
| `DeleteChannelModerator` | 許可 |  | 
| `DescribeChannelModerator` | 許可 |  | 
| `ListChannelModerator` | 許可されています |  | 
| `CreateChannelBan` | 制限付きで許可 | 禁止する `AppInstanceUser` は、そのチャネルの `AppInstanceAdmin` またはモデレーターであってはなりません。 | 
| `DeleteChannelBan` | 制限付きで許可 |  | 
| `DescribeChannelBan` | 許可 |  | 
| `ListChannelBan` | 許可されています |  | 
| `UpdateChannelReadMarker` | 制限付きで許可 |  非 Elastic チャネルの場合は、まず [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) を使用して自分のメンバーシップを作成し、次に `UpdateChannelReadMarker` API を呼び出す必要があります。 Elastic チャネルでは許可されません。  | 
| `GetChannelMessage` |  制限付きで許可 | 送信済みメッセージにのみ許可されます。メッセージの送信者でない限り、チャネルフローで処理中のメッセージでは許可されません。 | 
| `ListChannelMessages` |  許可されています |  | 
| `DeleteChannelMessage` |  拒否 |  | 
| `RedactChannelMessage` |  制限付きで許可 | 送信済みメッセージにのみ許可されます。 | 
| `UpdateChannelMessage` |  制限付きで許可 | 自分の送信したメッセージのみを編集できます。 | 
| `AssociateChannelFlow` |  許可 |  | 
| `DisassociateChannelFlow` |  許可されています |  | 
| `GetChannelMessageStatus` |  制限付きで許可 | 自分のメッセージのメッセージステータスのみを取得できます。 | 
|  `ListSubChannels`  | 許可されています |  | 

## メンバー
<a name="member"></a>

`AppInstanceUser` は、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) API を介してチャネルに追加されると、チャネルのメンバーになります。

メンバーは自分が属するチャネルでのみアクションを実行できます。

**注記**  
`AppInstanceAdmin` または `ChannelModerator` であるメンバーは、これら 2 つのロールで許可されているチャネルでアクションを実行できます。


| API 名 | 許可または拒否 | メモ | 
| --- | --- | --- | 
| `UpdateChannel` | 拒否 |  | 
| `DeleteChannel` | 拒否 |  | 
| `DescribeChannel` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `ListChannel` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `ListChannelMembershipsForAppInstanceUser` | 制限付きで許可 | ARN は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) 値としてのみ使用できます。 | 
| `DescribeChannelMembershipForAppInstanceUser` | 制限付きで許可 | ARN は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) 値としてのみ使用できます。 | 
| `ListChannelsModeratedByAppInstanceUser` | 制限付きで許可 | ARN は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) 値としてのみ使用できます。 | 
| `DescribeChannelModeratedByAppInstanceUser` | 制限付きで許可 |  [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax) に別の AppInstanceUser を入力することもできます。 Elastic チャネルでは許可されません。 | 
| `CreateChannelMembership` | 制限付きで許可 | 他のメンバーは [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html#chime-CreateChannel-request-Mode](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html#chime-CreateChannel-request-Mode) チャネルにしか追加できません。 | 
| `DescribeChannelMembership` | 許可 |  | 
| `ListChannelMembership` | 許可 |  | 
| `DeleteChannelMembership` | 許可 |  | 
| `SendChannelMessage` | 許可 |  | 
| `GetChannelMessage` | 許可 |  | 
| `ListChannelMessage` | 許可されています |  | 
| `DeleteChannelMessage` | 拒否 |  | 
| `RedactChannelMessage` | 制限付きで許可 | 自分のメッセージのみを編集できます。 | 
| `UpdateChannelMessage` | 制限付きで許可 | 自分のメッセージのみを更新できます。 | 
| `CreateChannelModerator` | 拒否 |  | 
| `DeleteChannelModerator` | 拒否 |  | 
| `DescribeChannelModerator` | 拒否 |  | 
| `ListChannelModerator` | 拒否 |  | 
| `CreateChannelBan` | 拒否 |  | 
| `DeleteChannelBan` | 拒否 |  | 
| `DescribeChannelBan` | 拒否 |  | 
| `ListChannelBan` | 拒否 |  | 
| `UpdateChannelReadMarker` | 制限付きで許可 |  Elastic チャネルでは許可されません。  | 
| `GetChannelMessage` |  制限付きで許可 | 送信済みメッセージにのみ許可されます。メッセージの送信者でない限り、チャネルフローで処理中のメッセージでは許可されません。 | 
| `ListChannelMessages` |  許可されています |  | 
| `DeleteChannelMessage` |  制限付きで許可 | 送信済みメッセージにのみ許可されます。 | 
| `RedactChannelMessage` |  制限付きで許可 | 送信済みメッセージにのみ許可されます。 | 
| `UpdateChannelMessage` |  制限付きで許可 | 自分の送信したメッセージのみを編集できます。 | 
| `AssociateChannelFlow` |  拒否 |  | 
| `DisassociateChannelFlow` |  拒否 |  | 
| `GetChannelMessageStatus` |  制限付きで許可 | 自分のメッセージのメッセージステータスのみを取得できます。 | 
| `Listsubchannels` | 拒否 |  | 

## 非メンバー
<a name="non-member"></a>

非メンバーは通常の `AppInstanceUser` であり、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) API を使用して追加しない限り、チャネル関連のアクションを実行することはできません。

**注記**  
`AppInstanceAdmin` または `ChannelModerator` である非メンバーは、これら 2 つのロールで許可されているチャネル関連のアクションを実行できます。


| API 名 | 許可または拒否 | メモ | 
| --- | --- | --- | 
| `UpdateChannel` | 拒否 |  | 
| `DeleteChannel` | 拒否 |  | 
| `DescribeChannel` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `ListChannel` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `ListChannelMembershipsForAppInstanceUser` | 制限付きで許可 | ARN は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) 値としてのみ使用できます。 | 
| `DescribeChannelMembershipForAppInstanceUser` | 制限付きで許可 | [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax) に別の `AppInstanceUser` を入力することもできます。 Elastic チャネルでは許可されません。 | 
| `ListChannelsModeratedByAppInstanceUser` | 制限付きで許可 | ARN は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) 値としてのみ使用できます。 | 
| `DescribeChannelModeratedByAppInstanceUser` | 制限付きで許可 | ARN は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax) 値としてのみ使用できます。 | 
| `CreateChannelMembership` | 拒否 |  | 
| `DescribeChannelMembership` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `ListChannelMembership` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `DeleteChannelMembership` | 拒否 |  | 
| `SendChannelMessage` | 拒否 |  | 
| `GetChannelMessage` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `ListChannelMessage` | 制限付きで許可 | パブリックチャネルの詳細のみを取得できます。 | 
| `DeleteChannelMessage` | 拒否 |  | 
| `RedactChannelMessage` | 拒否 |  | 
| `UpdateChannelMessage` | 拒否 |  | 
| `CreateChannelModerator` | 拒否 |  | 
| `DeleteChannelModerator` | 拒否 |  | 
| `DescribeChannelModerator` | 拒否 |  | 
| `ListChannelModerator` | 拒否 |  | 
| `CreateChannelBan` | 拒否 |  | 
| `DeleteChannelBan` | 拒否 |  | 
| `DescribeChannelBan` | 拒否 |  | 
| `ListChannelBan` | 拒否 |  | 
| `UpdateChannelReadMarker` | 拒否 |  | 
| `GetChannelMessage` |  制限付きで許可 | 送信済みメッセージにのみ許可されます。メッセージの送信者でない限り、チャネルフローで処理中のメッセージでは許可されません。 | 
| `ListChannelMessages` |  制限付きで許可 |  | 
| `DeleteChannelMessage` |  拒否 | 拒否 | 
| `RedactChannelMessage` |  拒否 |  | 
| `UpdateChannelMessage` |  拒否 |  | 
| `AssociateChannelFlow` |  拒否 |  | 
| `DisassociateChannelFlow` |  拒否 |  | 
| `GetChannelMessageStatus` |  制限付きで許可 | 自分のメッセージのメッセージステータスのみを取得できます。 | 

# Amazon Chime SDK メッセージングでのメッセージングデータのストリーミング
<a name="streaming-export"></a>

メッセージおよびチャネルイベントなどのデータをストリーム形式で受信するように `AppInstance` を設定できます。その後、そのデータにリアルタイムで対応することができます。現在、Amazon Chime SDK メッセージングは Kinesis ストリームのみをストリームの送信先として受け付けています。この機能で Kinesis ストリームを使用するには、以下の前提条件を満たす必要があります。
+ Kinesis ストリームは、 と同じ AWS アカウントに存在する必要があります`AppInstance`。
+ ストリームは `AppInstance` と同じリージョンに存在する必要があります。
+ ストリーム名には `chime-messaging-` で始まるプレフィックスが付きます。
+ 少なくとも 2 つのシャードを設定する必要があります。各シャードは 1 秒あたり最大 1 MB のデータを受信できるため、それに応じてストリームをスケールしてください。
+ サーバー側の暗号化 (SSE) を有効にします。

**Kinesis ストリームを設定するには**

1. 前のセクションの前提条件を使用して 1 つ以上の Kinesis ストリームを作成し、ARN を取得します。呼び出し元が Amazon Chime のアクセス許可に加えて Kinesis のアクセス許可を持っていることを確認してください。

   次の例は、 CLI AWS を使用して 2 つのシャードを持つ Kinesis ストリームを作成する方法と、SSE を有効にする方法を示しています。

   `aws kinesis create-stream --stream-name chime-messaging-unique-name --shard-count 2`

   `aws kinesis start-stream-encryption --stream-name chime-messaging-unique-name --encryption-type KMS --key-id "alias/aws/kinesis"`

1. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutMessagingStreamingConfigurations.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutMessagingStreamingConfigurations.html) API を呼び出してストリーミングを設定します。

   2 つのデータタイプの一方または両方を設定でき、同じストリームまたは別々のストリームを選択できます。

   次の例は、 CLI AWS を使用して `ChannelMessage`および `Channel` データ型をストリーミング`appinstance`するように を設定する方法を示しています。

   ```
   aws chime-sdk-messaging put-messaging-streaming-configurations --app-instance-arn app_instance_arn \
   --streaming-configurations DataType=ChannelMessage,ResourceArn=kinesis_data_stream_arn
   ```

   ```
   aws chime-sdk-messaging put-messaging-streaming-configurations --app-instance-arn app_instance_arn \
   --streaming-configurations DataType=Channel,ResourceArn=kinesis_data_stream_arn
   ```

   データタイプには以下のスコープがあります。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/chime-sdk/latest/dg/streaming-export.html)

1. 設定した Kinesis ストリームからデータの読み取りを開始します。
**注記**  
ストリーミングを設定する前に送信されたイベントは、Kinesis ストリームには送信されません。

**[Data format] (データ形式)**  
Kinesis は、`EventType` および `Payload` のフィールドを含む JSON 形式のレコードを出力します。ペイロード形式は `EventType` によって異なります。以下の表は、イベントタイプおよびそれに対応するペイロード形式を示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/chime-sdk/latest/dg/streaming-export.html)

# Elastic チャネルを使用して Amazon Chime SDK ミーティングでライブイベントをホストする
<a name="elastic-channels"></a>

Elastic チャネルは、最大 100 万人が参加する大規模なチャットエクスペリエンスをサポートします。代表的な用途として、スポーツイベントや政治イベントのウォッチパーティーなどがあります。Elastic チャネルは米国東部 (バージニア北部) リージョンでのみ使用できます。

Elastic チャネルは、共通の設定の 1 つのチャネルと、さまざまな (つまり伸縮自在な) 数のサブチャネルで構成されます。この設定には、サブチャネル内のメンバー数の下限および上限も含まれています。

例えば、100 のサブチャネルを含む Elastic チャネルを作成し、そのサブチャネルに対してメンバー数の下限を 500 人、上限を 10,000 人に設定したとします。このサンプルチャネルにユーザーが参加すると、メンバー数が 10,000 人を超えるまで、システムはユーザーを 1 つのサブチャネルに自動的に割り当てます。メンバー数が 10,000 人を超えると、システムは新しいサブチャネルを作成し、そこに新しいメンバーを追加します。ユーザーが退室すると、システムはサブチャネルを削除し、残りのサブチャネルにメンバーを配分します。

視聴者をサブチャネルに分割すると、参加者が会話をフォローしやすくなります。モデレーターは一部のサブチャネルを見るだけで済むため、ワークロードも軽減されます。さらに、モデレーターは Elastic チャネルが提供する組み込みツールを使用できます。例えば、モデレーターは[ユーザーによるチャンルへのアクセスを禁止](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelBan.html)したり、[モデレーターを作成](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelModerator.html)したり、[チャネルフロー](https://docs.aws.amazon.com/chime-sdk/latest/dg/using-channel-flows.html)を使用してチャネル内のすべてのメッセージを自動的にモデレートしたりできます。

Amazon Chime SDK メッセージングクォータの詳細については、「*Amazon Chime SDK General Reference*」の「[Messaging Quotas](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html)」を参照してください。

**Topics**
+ [前提条件](#elastic-prereqs)
+ [Elastic チャネルの概念](#elastic-concepts)
+ [サポートされる追加の機能](#additional-features)
+ [Amazon Chime SDK ミーティングの Elastic チャネルの作成](create-elastic-channel.md)
+ [Amazon Chime SDK ミーティングで Elastic チャネルメンバーを管理する](manage-elastic-members.md)
+ [Amazon Chime SDK ミーティングでの Elastic チャネルメッセージの送信](send-messages-elastic.md)
+ [Amazon Chime SDK ミーティングの Elastic チャネルでの WebSocket システムメッセージについて](websocket-messages-elastic.md)
+ [Kinesis ストリームを使用して Amazon Chime SDK ミーティングでシステムメッセージを受信する](elastic-onboard-streams.md)
+ [デモアプリケーションで Amazon Chime SDK ミーティングの Elastic チャネルをテストする](elastic-testing.md)

## 前提条件
<a name="elastic-prereqs"></a>

Elastic チャネルを使用するには、以下が必要です。
+ Amazon Chime SDK メッセージング機能 (チャネルの管理、メッセージの送受信など) に関する知識。
+ Amazon Chime SDK メッセージング API を呼び出す機能。

## Elastic チャネルの概念
<a name="elastic-concepts"></a>

Elastic チャネルを効果的に使用するには、これらの概念を理解する必要があります。

**サブチャネル**  
Elastic チャネルは、メンバーをサブチャネルと呼ばれる論理コンテナに分割します。Elastic チャネルに `AppInstanceUser` を追加すると、ユーザーはサブチャネルのメンバーになります。そのユーザーはメッセージを送受信できますが、そのサブチャネルの他のメンバーとのみメッセージを送受信できます。システムは、あるサブチャネルからのメッセージを他のサブチャネルに表示することを許可しません。

**スケーリング**  
ユーザーエンゲージメントをサポートするには、すべてのサブチャネルがメンバーシップの最低要件を満たしている必要があります。Elastic チャネルを作成するときに、その値を指定します。ユーザーがイベントに参加したりイベントから退出したりすると、システムはメンバーをさまざまなサブチャネルに移管します。これにより、チャネル全体が「伸縮自在」になります。サブチャネルは以下のスケーリングアクションを実行します。  
+ **SCALE\$1OUT** — 新しい Elastic チャネルメンバーシップリクエストが受信され、すべてのサブチャネルが満杯になると、システムは新しいサブチャネルを作成し、既存のサブチャネルから新しいサブチャネルにメンバーシップを移管することによってスケールアウトします。
+ **SCALE\$1IN** — サブチャネルのメンバーシップ数が最小要件を下回り、別のサブチャネルに最初のサブチャネルのメンバー全員を収容できる容量がある場合、`SCALE_IN` イベントはそれらのメンバーシップを移管し、サブチャネルおよびすべてのメッセージを削除します。
削除されたチャネルのメッセージにアクセスする必要がある場合は、まずメッセージストリーミングを有効にする必要があります。詳細については、[Amazon Chime SDK メッセージングでのメッセージングデータのストリーミング](streaming-export.md) を参照してください。

**メンバーの移管**  
メンバーの移管は、メンバーシップバランシングによって `AppInstanceUser` があるサブチャネルから別のサブチャネルに移動する際に発生します。`AppInstanceUser` は移管後も Elastic チャネルに属します。ただし、新しいサブチャネルには異なるメンバーシップおよびメッセージが含まれているため、移管後に `AppInstanceUser` によって送信されたメッセージはそれらの異なるメンバーに送信されます。メンバーシップバランシングはモデレーターメンバーシップには影響しません。

**注記**  
 Elastic チャネルは、非表示のメンバーシップ、メンバーシップ設定、既読メッセージのタイムスタンプをサポートしていません。

## サポートされる追加の機能
<a name="additional-features"></a>

Elastic チャネルはこれらのメッセージング機能もサポートしています。
+ [プリフェッチ](websockets.md#prefetch)
+ [チャネルフロー](using-channel-flows.md)

# Amazon Chime SDK ミーティングの Elastic チャネルの作成
<a name="create-elastic-channel"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html) API の `ElasticChannelConfiguration` フィールドを使用して Elastic チャネルを作成します。Elastic チャネルを作成したら、チャネルメンバーシップを作成します。

**注記**  
非 Elastic チャネルの場合、チャネルを作成した `AppInstanceUser` がメンバーおよびモデレーターとしてそのチャネルに自動的に追加されます。Elastic チャネルの場合、チャネル作成者はモデレーターとしてのみ追加されます。
いったん設定した `ElasticChannelConfiguration` を更新することはできません。
チャネルを Elastic から非 Elastic に、またはその逆に更新することはできません。
[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html) API リクエストにメンバー ARN のリストを含めることはできません。ただし、モデレーター ARN のリストを含めることはできます。
`UNRESTRICTED` タイプの Elastic チャネルは作成できません。

# Amazon Chime SDK ミーティングで Elastic チャネルメンバーを管理する
<a name="manage-elastic-members"></a>

Elastic チャネルのメンバーを管理するには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) API、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelModerator.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelModerator.html) API、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelBan.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelBan.html) API を使用します。以下の情報は、これらの使用方法を説明しています。

**チャネルメンバーシップ**  
`CreateChannelMembership` API はサブチャネルレベルでメンバーシップを作成します。サブチャネルにはモデレーターおよび一般メンバーを含めることができます。  
+ **モデレーター** — モデレーターを複数のサブチャネルに追加できます。これにより、モデレーターは自分が属する各サブチャネルでメッセージを送信できます。サブチャネルにモデレーターを追加するときは、`SubChannelId` を指定する必要があります。

  モデレーターを新しいサブチャネルに自動的に割り当てる場合は、[メッセージストリーミングを有効](streaming-export.md)にし、サブチャネル作成イベントをリッスンして、それらのイベントに応じてモデレーターメンバーシップを作成できます。

  最後に、特定のサブチャネルまたはすべてのサブチャネルからモデレーターを削除できます。どちらの場合も [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DeleteChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DeleteChannelMembership.html) API を使用します。特定のサブチャネルからモデレーターを削除するには、`SubChannelId` を指定します。サブチャネルの ID を指定しない場合、システムはそのモデレーターをすべてのサブチャネルから削除します。最後に、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ListSubChannels](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ListSubChannels) API を使用して、サブチャネルおよび各サブチャネルのメンバー数を一覧表示できます。
+ **一般メンバー** — 一般メンバーはチャネルメンバーシップの大半を占めます。一般メンバーは 1 つのサブチャネルにのみ追加できます。また、どのサブチャネルでメンバーシップが作成されるかはシステムが制御するため、チャネルメンバーシップを作成または削除するときに `SubChannelId` を渡すことはできません。

**チャネルモデレーター**  
`CreateChannelModerator` API は Elastic チャネルレベルでモデレーターを作成します。モデレーターはすべてのサブチャネルのすべてのメッセージを表示できます。一般メンバーをチャネルモデレーターに昇格させると、システムはそのメンバーの既存のチャネルメンバーシップをすべて削除します。モデレーターを降格させた場合も同様です。

**チャネルへのアクセス禁止**  
`CreateChannelBan` API は Elastic チャネルレベルでアクセス禁止を作成します。アクセスを禁止された `AppInstanceUser` はどのサブチャネルにも属することができません。メンバーをアクセス禁止にすると、システムはそのメンバーのチャネルメンバーシップをすべて削除します。

# Amazon Chime SDK ミーティングでの Elastic チャネルメッセージの送信
<a name="send-messages-elastic"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html) API はサブチャネルレベルでメッセージを作成します。メッセージを送信するには、`subChannelId` が必要です。[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_UpdateChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_UpdateChannelMessage.html) API、および [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_RedactChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_RedactChannelMessage.html) API を使用してメッセージを編集したり削除したりすることもできますが、いずれの場合も、`subChannelId` が必要です。

**注記**  
メッセージ送信者がメッセージを編集または秘匿化できるのは、メッセージの送信先のサブチャネルに属している場合のみです。メンバーシップバランシングがメンバーを別のサブチャネルに移管した場合、そのメンバーは、その新しいサブチャネルで送信したメッセージのみを編集または秘匿化できます。

# Amazon Chime SDK ミーティングの Elastic チャネルでの WebSocket システムメッセージについて
<a name="websocket-messages-elastic"></a>

Amazon Chime SDK は、チャネル内で発生するイベントのシステムメッセージを接続しているすべてのクライアントに送信します。以下のリストは、Elastic チャネルのシステムメッセージについて説明しています。

**メッセージイベント**  
Elastic チャネルのイベントペイロードには `subChannelId` フィールドが含まれます。非 Elastic チャネルのペイロードは変わりません。

**メンバーシップイベント**  
`CREATE_CHANNEL_MEMBERSHIP` および `DELETE_CHANNEL_MEMBERSHIP` イベントのペイロードに `subChannelId` フィールドが含まれるようになりました。  
Elastic チャネルは `BATCH_CREATE_CHANNEL_MEMBERHSIP` イベントをサポートしていません。[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_BatchCreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_BatchCreateChannelMembership.html) API を呼び出すと、システムは個別の `CREATE_CHANNEL_MEMBERSHIP` イベントを送信します。  
これで、`UPDATE_CHANNEL_MEMBERSHIP` イベントタイプを使用してメンバーシップ情報の変更を通知できるようになりました。例えば、あるサブチャネルから別のサブチャネルへのメンバー移管中に、システムが `SubChannelId` ペイロードに新しい内容を含む `UPDATE_CHANNEL_MEMBERSHIP` イベントを送信して、メンバーが移管されたことを示します。  
システムは移管されたメンバーにのみ `UPDATE_CHANNEL_MEMBERSHIP` イベントを送信し、サブチャネルの他のメンバーには送信しません。このため、WebSocket ではなく [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ListChannelMemberships.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ListChannelMemberships.html) API を使用してチャネルメンバーシップ一覧にデータを入力することをお勧めします。詳細については、[WebSockets を使用して Amazon Chime SDK メッセージングでメッセージを受信する](websockets.md) を参照してください。

# Kinesis ストリームを使用して Amazon Chime SDK ミーティングでシステムメッセージを受信する
<a name="elastic-onboard-streams"></a>

データをストリーム形式で受信するように `AppInstance` を設定できます。例えば、ストリームにはメッセージ、サブチャネルイベント、およびチャネルイベントを含めることができます。

その一環として、`CREATE_SUB_CHANNEL` および `DELETE_SUB_CHANNEL` イベントもサポートしています。メンバーシップバランシングの一環として、サブチャネルがいつ作成または削除されたかを示します。データストリームの受信について詳しくは、「[Amazon Chime SDK メッセージングでのメッセージングデータのストリーミング](streaming-export.md)」を参照してください。

# デモアプリケーションで Amazon Chime SDK ミーティングの Elastic チャネルをテストする
<a name="elastic-testing"></a>

Amazon Chime SDK メッセージング機能はすべて GitHub ([https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat)) でテストできます。

# Amazon Chime SDK メッセージングでモバイルプッシュ通知を使用してメッセージを受信する
<a name="using-push-notifications"></a>

Amazon Chime SDK メッセージングを設定して、チャネルメッセージをモバイルプッシュ通知チャネルに送信できます。Amazon Chime SDK には、プッシュ通知用に設定された Amazon Pinpoint アプリケーションが必要です。Amazon Pinpoint アプリケーションは以下の前提条件を満たす必要があります。
+ Amazon Pinpoint アプリケーションには、少なくとも FCM または APNS チャネルが設定され、有効になっている必要があります。
+ Amazon Pinpoint アプリケーションは、Amazon Chime SDK アプリケーションインスタンスと同じ AWS アカウントとリージョンに存在する必要があります。

**注記**  
デフォルトでは、プッシュ通知チャネルのすべてのメンバーは、メッセージ送信者を含め、プッシュ通知を受け取ります。ただし、メッセージが送信者に送信されないようにフィルタルールを設定できます。詳細については、このセクションの後半の「[フィルタルールを使用して Amazon Chime SDK メッセージングのメッセージをフィルタリングする](filter-msgs.md)」を参照してください。

**Topics**
+ [Amazon Chime SDK メッセージング用の Amazon Pinpoint アプリケーションを作成する](create-pinpoint.md)
+ [Amazon Chime SDK メッセージング用のサービスロールを作成する](create-service-role.md)
+ [Amazon Chime SDK メッセージングでモバイルデバイスのエンドポイントをアプリケーションインスタンスユーザーとして登録する](register-endpoint.md)
+ [Amazon Chime SDK メッセージングで通知を有効にした状態でチャネルメッセージを送信する](send-channel-msg-with-notifications.md)
+ [Amazon Chime SDK メッセージングでのプッシュ通知の受信](receive-notifications.md)
+ [Amazon Chime SDK メッセージングのプッシュ通知エラーのデバッグ](debug-notifications.md)
+ [フィルタルールを使用して Amazon Chime SDK メッセージングのメッセージをフィルタリングする](filter-msgs.md)

# Amazon Chime SDK メッセージング用の Amazon Pinpoint アプリケーションを作成する
<a name="create-pinpoint"></a>

プッシュ通知を送信するには、Amazon Chime SDK で、モバイルアプリケーションにプッシュを送信するように設定された Amazon Pinpoint アプリケーションが必要です。次の手順では、 AWS コンソールを使用して Pinpoint アプリケーションを作成する方法について説明します。

**Amazon Pinpoint アプリケーションを作成するには**

1.  AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/) で Amazon Pinpoint コンソールを開きます。

   Amazon Pinpoint を初めて使用すると、サービスの特徴を紹介するページが表示されます。

1. [**使用開始**] セクションで、プロジェクトの名前を入力し、[**Create a project**] を選択します。

1. **[機能の設定]** ページで、**[プッシュ通知]** の横にある **[設定]** を選択します。

1. **[プッシュ通知のセットアップ]** ページで、**[Apple プッシュ通知サービス (APNs)]**、**[Firebase クラウドメッセージング (FCM)]**、またはその両方を切り替え、必須フィールドに入力します。
**重要**  
Amazon Chime SDK は現在、APN および FCM へのプッシュ通知の送信のみをサポートしています。

1. 完了したら、**[保存]** を選択します。

1. Amazon Pinpoint コンソール ([https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/)) に戻り、**[プロジェクト ID]** の値を書き留めます。これを Amazon Pinpoint アプリケーションの ARN として使用します。

# Amazon Chime SDK メッセージング用のサービスロールを作成する
<a name="create-service-role"></a>

AWS は、サービスロールを使用して AWS サービスにアクセス許可を付与し、 AWS リソースにアクセスできるようにします。サービスロールにアタッチするポリシーによって、どのリソースにサービスがアクセスできるか、およびそれらのリソースで何ができるかが決まります。Amazon Chime SDK 用に作成したサービスロールは、Amazon Pinpoint アプリケーションに対して `SendMessages` 呼び出しを行うためのアクセス許可をサービスに付与します。

**サービスロールを作成する**

1.  AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. ナビゲーションペインで、**Policies** を選択し、**Create Policy** を選択します。

1. **[JSON]** タブを選択し、以下のポリシーをテキストボックスにコピーします。を前のステップで作成した Amazon Pinpoint アプリケーションの ID `project_id`に置き換え、 をアカウント AWS ID `aws_account_id`に置き換えてください。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Action": "mobiletargeting:SendMessages",
           "Resource": "arn:aws:mobiletargeting:us-east-1:123456789012:apps/project_id/messages",
           "Effect": "Allow"
       }
   }
   ```

------

1. **[Next: Tags]** (次へ: タグ) を選択します。

1. **[次へ: 確認]** を選択し、**[名前]** フィールドに **AmazonChimePushNotificationPolicy** を入力して **[ポリシーの作成]** を選択します。

1. ナビゲーションペインで **ロール** を選択してから、**ロールを作成する** を選択します。

1. **[ロールの作成]** ページで **[AWS サービス]** を選択し、**[ユーザーケースの選択]** リストを開いて **[EC2]** を選択します。

1. **[次へ: アクセス許可]** を選択し、検索ボックスに **AmazonChimePushNotificationPolicy** を入力して、ポリシーの横にあるチェックボックスをオンにします。

1. **[Next: Tags]** (次へ: タグ) を選択します。

1. **[次へ: 確認]** を選択し、**[名前]** フィールドに **ServiceRoleForAmazonChimePushNotification** を入力します。
**重要**  
上記の名前を使用する必要があります。Amazon Chime SDK は、その特定の名前だけを受け入れます。

1. **[ロールの作成]** を選択し、**[ロール]** ページで検索ボックスに **ServiceRoleForAmazonChimePushNotification** を入力して、一致するロールを選択します。

1. **[信頼関係]** タブを選択し、**[信頼関係の編集]** を選択して、既存のポリシーを以下のポリシーに置き換えます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "messaging.chime.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
       ]
   }
   ```

------

1. **信頼ポリシーの更新** を選択します。

**重要**  
名前、アクセス許可ポリシー、または信頼ポリシーを変更してロールを変更すると、プッシュ通知機能が無効になる可能性があります。

# Amazon Chime SDK メッセージングでモバイルデバイスのエンドポイントをアプリケーションインスタンスユーザーとして登録する
<a name="register-endpoint"></a>

プッシュ通知を受信するには、アプリケーションインスタンスユーザーはまず [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html) API を使用してモバイルデバイスを登録する必要があります。デバイスのオペレーティングシステムのデバイストークンにアクセスできるモバイルアプリケーションから登録する必要があります。

アプリケーションインスタンスユーザーが ARN にリストされている Amazon Pinpoint アプリケーションにアクセスできるようにするには、ユーザーに Amazon Pinpoint ARN で `mobiletargeting:GetApp` を呼び出すアクセス許可が必要です。そうしないと、Amazon Chime SDK は [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html) を呼び出すときに 403 Forbidden エラーをスローします。

この例は、エンドポイントを登録するのに必要なポリシーを示しています。

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

****  

```
{ 
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PermissionToRegisterEndpoint",
            "Effect": "Allow",
            "Action": "chime:RegisterAppInstanceUserEndpoint",
            "Resource": "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/app_instance_user_id"
        },
        {
            "Sid": "PermissionToGetAppOnPinpoint",
            "Effect": "Allow",
            "Action": "mobiletargeting:GetApp",
            "Resource": "arn:aws:mobiletargeting:us-east-1:123456789012:apps/project_id"
        }
    ]
}
```

------

**エンドポイントを登録するには**
+ Amazon Pinpoint ARN およびデバイストークンを使用して [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html) API を呼び出します。

# Amazon Chime SDK メッセージングで通知を有効にした状態でチャネルメッセージを送信する
<a name="send-channel-msg-with-notifications"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html) API には、Amazon Chime SDK が Amazon Pinpoint に送信するプッシュ通知を構築するために使用するオプションの `PushNotification` 属性があります。現在、Amazon Chime SDK は通知タイトルおよび本文フィールドのみをサポートしています。

Amazon Chime SDK は APN の VoIP プッシュもサポートしています。プッシュ通知を APN VoIP プッシュとして送信するには、`PushNotification` 属性のタイプを VOIP に設定します。

# Amazon Chime SDK メッセージングでのプッシュ通知の受信
<a name="receive-notifications"></a>

Amazon Chime SDK には、チャネルメッセージのプッシュ通知のタイトルおよび本文に加えて、チャネルメッセージ ID およびチャネル ARN もデータペイロードに含まれます。この情報を使用して、チャネルメッセージ全体をロードします。

以下の例は、標準的なプッシュ通知ペイロードを示しています。

```
{
    "pinpoint.openApp=true",
    "pinpoint.notification.title=PushNotificationTitle",
    "pinpoint.notification.body=PushNotificationBody",
    "pinpoint.campaign.campaign_id=_DIRECT",
    "pinpoint.notification.silentPush=0",
    "pinpoint.jsonBody="{
        "chime.message_id":"ChannelMessageId",
        "chime.channel_arn":"ChannelARN"
    }
}
```

## プッシュ通知受信の無効化またはフィルタリング
<a name="disable-filter-receipt"></a>

Amazon Chime SDK には、アプリケーションインスタンスユーザーがプッシュ通知を受け取るかどうかを制御できる複数のオプションが用意されています。

**すべてのプッシュ通知を無効にする**  
 アプリケーションインスタンスユーザーは、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_UpdateAppInstanceUserEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_UpdateAppInstanceUserEndpoint.html) を呼び出して `AllowMessages` 属性を `NONE` に設定することで、プッシュ通知を完全に無効にできます。

**チャネルのプッシュ通知を無効にする**  
アプリケーションインスタンスユーザーは、**[プッシュ通知設定]** フィールドで [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html) を呼び出すことで、特定のチャネルのプッシュ通知を `NONE` に設定できます。

**チャネルのプッシュ通知をフィルタリングする**  
アプリケーションインスタンスユーザーは、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html) API を使用して、特定のプッシュ通知のみを受信するようにフィルタルールを設定できます。詳細については、[フィルタルールを使用して Amazon Chime SDK メッセージングのメッセージをフィルタリングする](filter-msgs.md) を参照してください。

# Amazon Chime SDK メッセージングのプッシュ通知エラーのデバッグ
<a name="debug-notifications"></a>

Amazon Chime SDK は Amazon EventBridge と統合されており、プッシュメッセージの配信エラーを通知します。エラーをさらにデバッグするには、エラー発生時に Amazon Pinpoint が送信する [CloudWatch メトリクス](https://docs.aws.amazon.com/pinpoint/latest/userguide/monitoring-metrics.html)を調べることもできます。

以下の表に、配信エラーメッセージの一覧および説明を示します。


| メッセージ | 説明 | 
| --- | --- | 
| リクエストの処理が、不明なエラー、例外、または障害により実行できませんでした。 | 内部エラーが発生しました。もう一度試してください。 | 
| 指定されたリソースは見つかりませんでした。AppInstanceUserEndpoint は非アクティブ化されます。 | Amazon Pinpoint アプリケーションは存在しません。 | 
| Amazon Pinpoint に送信されたリクエストが多すぎます。 | Amazon Pinpoint は送信メッセージをスロットリングしました。 | 
| メッセージを送信できません。ServiceRoleForAmazonChimePushNotification で IAM アクセス許可ポリシーを確認してください。 | Amazon Chime SDK 用に作成されたロールには、`mobiletargeting:SendMessages` を呼び出すアクセス許可がありません。ロールの IAM ポリシーを確認してください。 | 
| メッセージを送信できません。ServiceRoleForAmazonChimePushNotification で IAM の信頼関係を確認してください。 | Amazon Chime SDK には、プッシュ通知用のロールへのアクセス許可がありません。 IAM ロールの信頼ポリシーにサービスプリンシパル (`messaging.chime.amazonaws.com`) が含まれていることを確認してください。 | 

# フィルタルールを使用して Amazon Chime SDK メッセージングのメッセージをフィルタリングする
<a name="filter-msgs"></a>

Amazon Chime SDK を使用すると、アプリケーションインスタンスユーザーのチャネルメンバーシップにフィルタルールを設定して、受信メッセージを制限できます。フィルタルールはチャネルメンバーシップに設定され、メッセージ属性マップを対象に実行されます。メッセージ属性マップでは、文字列キーから文字列値にマッピングさせる必要があります。フィルタルールで文字列を正確にマッチングさせることで、包含と除外を行えます。

**重要**  
Amazon Chime SDK のフィルタルールは、エスケープした JSON 文字列にのみ対応しています。
通知チャネルのすべてのメンバーは、メッセージ送信者を含め、プッシュ通知を受け取ります。これを防ぐには、以下の最初のルール例を参照してください。

チャネルメンバーシップにフィルタルールを設定するには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html) API を使用します。[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html) API コールの一部として、チャネルメッセージでメッセージ属性を指定できます。

**Topics**
+ [フィルタルールタイプ](#filter-rule-types)
+ [フィルタルールの制限](#filter-rule-limits)
+ [フィルタルールの例](#example-preference-rule)

## フィルタルールタイプ
<a name="filter-rule-types"></a>

Amazon Chime SDK が対応しているフィルタルールタイプを次に示します。
+ 包括的完全一致文字列マッチング
+ 排他的完全一致文字列マッチング
+ AND または OR を使用する複数のフィルタルール

## フィルタルールの制限
<a name="filter-rule-limits"></a>

Amazon Chime SDK のフィルタルールには、次のような制限があります。
+ 文字列の完全一致にのみ対応しています。
+ フィルタルールの合計サイズは 2 KB です。
+ メッセージ属性の合計サイズは 1 KB です。
+ OR フィルタルール内には、最大 5 つの制限を個別に設定できます。
+ フィルタルール全体の最大複雑度は 20 です。複雑度とは、フィルタルール内のキーおよび値の数を合計したものです。

  例えば、次のフィルタルールの複雑度は 4 です。

  ```
  "FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}],\"mention\":[\"Bob\"]}
  ```

  この値は、次のように計算します。

  ```
  Keys = “type” and “mention” - Complexity 2
  Values = "Room" and "Bob" -   Complexity 2
  
                        Total complexity = 4
  ```

## フィルタルールの例
<a name="example-preference-rule"></a>

次の例は、チャネルメンバーシップ設定とフィルタルールの使用方法を示しています。

**送信者へのメッセージ送信の防止**  
このフィルタルールは、メッセージ送信者を除くすべてのチャネルメンバーにメッセージを送信します。

```
{
    "Preferences": {
        "PushNotifications": {
            "FilterRule": "{\"type\":[{\"anything-but\": [\"USER_ARN\"]}]}",
            "AllowNotifications": "FILTERED"
        }
    }
}
```

上記が設定されたアプリインスタンスユーザーは、次の属性を持つチャネルメッセージを受信します。

```
"MessageAttributes": {
    "senderId": {
        "StringValues": ["USER_ARN"]
    }
}
```

**包括的文字列マッチング**  
 このフィルタルールでは、メッセージ属性キーが「mention」で値が「Bob」のメッセージをすべて許可します。

```
{
    "Preferences": {
        "PushNotifications": {
            "FilterRule": "{\"mention\":[\"Bob\"]}",
            "AllowNotifications": "FILTERED"
        }
    }
}
```

上記が設定されたアプリインスタンスユーザーは、次のメッセージ属性を持つチャネルメッセージを受信します。

```
"MessageAttributes": {
    "mention": {
        "StringValues": ["Bob", "Alice"]
    }
}
```

ただし、このアプリインスタンスユーザーは、次の属性を持つチャネルメッセージは受信しません。

```
"MessageAttributes": {
    "mention": {
        "StringValues": ["Tom"]
    }
}
```

**排他的文字列マッチング**  
 このフィルタルールでは、属性キー「type」と「Room」という値を持つメッセージ以外のメッセージをすべて許可します。

```
{
    "Preferences": {
        "PushNotifications": {
            "FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}]}",
            "AllowNotifications": "FILTERED"
        }
    }
}
```

これらが設定されたアプリインスタンスユーザーは、次のメッセージ属性を持つチャネルメッセージを受信します。

```
"MessageAttributes": {
    "type": {
        "StringValues": ["Conversation"]
    }
}
```

ただし、このアプリインスタンスユーザーには、次の属性を持つチャネルメッセージは表示されません。

```
"MessageAttributes": {
    "type": {
        "StringValues": ["Room"]
    }
}
```

**AND ロジックを使用したマルチフィルタルール**  
フィルタルールと AND ロジックを組み合わせる場合、メッセージは、適用されるフィルタ条件をすべて満たしている必要があります。

```
{
    "Preferences": {
        "PushNotifications": {
            "FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}],\"mention\":[\"Bob\"]}",
            "AllowNotifications": "FILTERED"
        }
    }
}
```

上記が設定されたアプリインスタンスユーザーは、次のメッセージ属性を持つチャネルメッセージを受信します。

```
"MessageAttributes": {
    "mention": {
        "StringValues": ["Bob"]
    },
    "type": {
        "StringValues": ["Conversation"]
    }
}
```

**OR ロジックを使用したマルチフィルタルール**  
フィルタルールと OR ロジックを組み合わせるには、`$or` を使用します。OR ロジックを使用する場合、メッセージは、適用されるフィルタ条件の 1 つを満たす必要があります。

```
{
    "Preferences": {
        "PushNotifications": {
            "FilterRule": "{\"$or\":[{\"mention\":[\"Bob\"]},{\"type\":[{\"anything-but\": [\"Room\"]}]}]}",
            "AllowNotifications": "FILTERED"
        }
    }
}
```

上記が設定されたアプリインスタンスユーザーは、次のメッセージ属性を持つチャネルメッセージを受信します。

```
"MessageAttributes": {
    "mention": {
        "StringValues": ["Bob"]
    }
}
```

上記が設定されたアプリインスタンスユーザーは、次のメッセージ属性を持つチャネルメッセージを受信します。

```
"MessageAttributes": {
    "type": {
        "StringValues": ["Conversation"]
    }
}
```

# Amazon Chime SDK メッセージングのサービスリンクロールの使用
<a name="using-roles"></a>

Amazon Chime SDK は AWS Identity and Access Management (IAM) [ サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用します。サービスにリンクされたロールは、Amazon Chime SDK に直接リンクされた一意のタイプの IAM ロールです。Amazon Chime SDK は、サービスにリンクされたロールを事前定義し、サービスがユーザーに代わって他の AWS サービスを呼び出すために必要なすべてのアクセス許可を含めます。

サービスにリンクされたロールでは、必要な許可を手動で追加する必要がないので、Amazon Chime SDK を効率的に設定できます。サービスにリンクされたロールの許可は Amazon Chime SDK が定義し、別段の定義がない限り、Amazon Chime SDK のみがそのロールを引き受けることができます。定義された許可には、信頼ポリシーとアクセス許可ポリシーが含まれます。アクセス許可ポリシーを他の IAM エンティティにアタッチすることはできません。

サービスリンクロールを削除するには、まずその関連リソースを削除します。これは、リソースにアクセスするための許可を誤って削除できないため、Amazon Chime SDK リソースを保護します。

サービスにリンクされたロールをサポートするその他のサービスの詳細については、「[IAM と連携するAWS のサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。**サービスにリンクされたロール**列が「**はい**」になっているサービスを見つけます。そのサービスに関するドキュメントを表示するには、**[はい]** リンクを選択します。

**Topics**
+ [サービスにリンクされたロールを使用して Amazon Chime SDK メッセージングのデータをストリーミングする](stream-service-linked.md)

# サービスにリンクされたロールを使用して Amazon Chime SDK メッセージングのデータをストリーミングする
<a name="stream-service-linked"></a>

以下のセクションでは、データストリーミングでサービスにリンクされたロールを管理する方法について説明します。

**Topics**
+ [サービスにリンクされたロールのアクセス許可](#role-permissions)
+ [サービスにリンクされたロールの作成](#create-service-linked-role)
+ [サービスにリンクされたロールの編集](#editing-roles)
+ [サービスにリンクされたロールによって使用されるリソースの削除](#cleaning-up)
+ [サービスにリンクされたロールの削除](#deleting-roles)

## サービスにリンクされたロールのアクセス許可
<a name="role-permissions"></a>

Amazon Chime SDK では、**AWSServiceRoleForChimeSDKMessaging** という名前のサービスリンクロールを使用します。このロールは、データストリーミングに使用される Kinesis ストリームなど、Amazon Chime SDK が使用または管理する AWS サービスおよびリソースへのアクセスを許可します。

**AWSServiceRoleForChimeSDKMessaging** サービスリンクロールは、以下のサービスを信頼してロールを引き受けます。
+ messaging.chime.amazonaws.com

ロールアクセス許可ポリシーは、指定したリソースに対して以下のアクションを実行することを Amazon Chime SDK に許可します。
+ `kms:GenerateDataKey` は、`kinesis.*.amazonaws.com` を使用してリクエストが行われた場合のみ。
+ `kinesis:PutRecord`、`kinesis:PutRecords`、または `kinesis:DescribeStream` は、以下の形式のストリームのみ: `arn:aws:kinesis:*:*:stream/chime-messaging-*`。

次の例はポリシーを示しています。

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

****  

```
{
    	"Version":"2012-10-17",		 	 	 
    	"Statement": [
    		{
    			"Effect": "Allow",
    			"Action": [
    				"kms:GenerateDataKey"
    			],
    			"Resource": "*",
    			"Condition": {
    				"StringLike": {
    					"kms:ViaService": [
    						"kinesis.*.amazonaws.com"
    					]
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"kinesis:PutRecord",
    				"kinesis:PutRecords",
    				"kinesis:DescribeStream"
    			],
    			"Resource": [
    				"arn:aws:kinesis:*:*:stream/chime-messaging-*"
    			]
    		}
    	]
    }
```

------

サービスにリンクされたロールの作成、編集、削除を IAM エンティティ (ユーザー、グループ、ロールなど) に許可するには、アクセス許可を設定する必要があります。詳細については、「IAM ユーザーガイド」の「[サービスにリンクされたロールのアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)」を参照してください。

## サービスにリンクされたロールの作成
<a name="create-service-linked-role"></a>

サービスリンクロールを手動で作成する必要はありません。[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutMessagingStreamingConfigurations.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutMessagingStreamingConfigurations.html) API を使用してデータストリーミング設定を作成する際に、Amazon Chime SDK によってサービスにリンクされたロールが作成されます。

IAM コンソールを使用して、Amazon Chime SDK ユースケースでサービスにリンクされたロールを作成することもできます。CLI または AWS API AWS で、サービス名を使用して`messaging.chime.amazonaws.com`サービスにリンクされたロールを作成します。詳細については、「IAM ユーザーガイド」の「[サービスにリンクされたロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#create-service-linked-role)」を参照してください。このロールを削除しても、このプロセスを繰り返して再度作成することができます。

## サービスにリンクされたロールの編集
<a name="editing-roles"></a>

サービスにリンクされたロールの作成後は、その説明のみ編集できます。編集は IAM を使用して行います。詳細については、「*IAM ユーザーガイド*」の「[サービスにリンクされたロールの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)」を参照してください。

## サービスにリンクされたロールによって使用されるリソースの削除
<a name="cleaning-up"></a>

IAM を使用してサービスにリンクされた役割を削除するには最初に、その役割で使用されているリソースをすべて削除する必要があります。

**注記**  
Amazon Chime SDK がリソースを使用しているときにリソースを削除しようとすると、削除が失敗することがあります。削除が失敗した場合は、数分待ってから操作を再試行してください。

**AmazonChimeServiceChatStreamingAccess ロールで使用されているリソースを削除するには**  
次の CLI コマンドを実行して、アプリケーションインスタンスのデータストリーミングをオフにします。
+ `aws chime-sdk-messaging delete-messaging-streaming-configurations --app-instance-arn app_instance_arn`

このアクションにより、アプリインスタンスのストリーミング設定がすべて削除されます。

## サービスにリンクされたロールの削除
<a name="deleting-roles"></a>

サービスにリンクされたロールが必要な機能またはサービスが不要になった場合は、そのロールを削除することをお勧めします。そうしないと、アクティブにモニタリングもメンテナンスもされない不使用のエンティティが存在することになります。ただし、ロールを手動で削除する前に、サービスにリンクされたロールによって使用されるリソースを削除する必要があります。

IAM コンソール、または AWS API を使用して AWS CLI、**AmazonChimeServiceRoleForChimeSDKMessaging**サービスにリンクされたロールを削除できます。詳細については、IAM ユーザーガイドの[「サービスにリンクされたロールの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)」を参照してください。

# チャネルフローを使用した Amazon Chime SDK メッセージングのメッセージの処理
<a name="using-channel-flows"></a>

チャネルフローを使用すると、送信中のメッセージがメッセージングチャネルの受信者に配信される前に、そのメッセージに対してビジネスロジックを実行できます。チャネルフローでは、行政 ID 番号、電話番号、または冒涜的な表現をメッセージから削除するなどのアクションを実行できます。投票アンケートへの回答を集約した後で結果を参加者に返送するなどの機能を実行するためにチャネルフローを使用することもできます。

**前提条件**
+ Amazon Chime SDK の基本機能 (チャネルの管理、メッセージの送受信など) に関する知識。
+ Amazon Chime SDK メッセージング API を呼び出す機能。

**チャネルフローの概念**

チャネルフローを効果的に使用するには、以下の概念を理解する必要があります。

**チャネルプロセッサ**  
チャネルメッセージで前処理ロジックを実行する AWS Lambda 関数。チャネルをチャネルフローに関連付けると、フロー内のプロセッサがチャネル内のメッセージごとに呼び出されます。レイテンシーを低減するため、ほとんどのユースケースではシングルプロセッサが最適です。最後に、処理が完了すると、各プロセッサは Amazon Chime SDK サービスにコールバックする必要があります。  
現在、チャネルフローごとにサポートされるプロセッサは 1 つだけです。複数のプロセッサが必要な場合は、サポートチケットを送信してプロセッサを増やしてください。

**チャネルフロー**  
チャネルフローは、最大 3 つのチャネルプロセッサと実行シーケンスを格納するコンテナです。フローをチャネルに関連付けると、プロセッサはそのチャネルに送信されるすべてのメッセージを処理します。

**チャネルフローの呼び出し**  
以下のアイテムによってチャネルフローが呼び出されます。
+ 新しい永続的な標準メッセージ
+ 新しい非永続的な標準メッセージ
+ 更新された永続的な標準メッセージ

**注記**  
チャネルフローはコントロールメッセージやシステムメッセージを処理しません。Amazon Chime SDK メッセージングによって提供されるメッセージタイプの詳細については、「[Amazon Chime SDK メッセージタイプについて](msg-types.md)」を参照してください。

**Topics**
+ [Amazon Chime SDK メッセージング用のチャネルプロセッサの設定](processor-setup.md)
+ [Amazon Chime SDK メッセージングのチャネルフローの作成](create-channel-flow.md)
+ [Amazon Chime SDK メッセージングのチャネルフローの関連付けと関連付け解除](associate-channel-flow.md)
+ [Amazon Chime SDK メッセージングでのメッセージの送信](sending-msgs.md)
+ [Amazon Chime SDK メッセージング用の EventBridge を使用した自動化による障害アラートの作成](event-bridge-events.md)

# 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 を呼び出します。

# Amazon Chime SDK メッセージングのチャネルフローの作成
<a name="create-channel-flow"></a>

プロセッサをセットアップしたら、Amazon Chime SDK メッセージング API を使用してチャネルフローを作成します。`Fallback` アクションを使用して、チャネルフローがプロセッサ Lambda 関数に接続できない場合に処理を停止するか続行するかを定義できます。プロセッサのフォールバックアクションが `ABORT` の場合、プロセッサはメッセージステータスを `FAILED` に設定し、メッセージは送信しません。チャネルフローシーケンスの最後のプロセッサのフォールバックアクションが `CONTINUE` の場合、メッセージは処理されたと見なされ、チャネル内の受信者に送信されることに注意してください。チャネルフローを作成したら、それを個々のチャネルに関連付けることができます。詳細については、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelFlow.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelFlow.html) API ドキュメントを参照してください。

# Amazon Chime SDK メッセージングのチャネルフローの関連付けと関連付け解除
<a name="associate-channel-flow"></a>

チャネルをチャネルフローに関連付けると、チャネルフロー内のプロセッサは、チャネルに送信されたすべてのメッセージを前処理します。チャネルフローの関連付けおよび関連付け解除 API を呼び出すには、チャネルモデレーターまたは管理者である必要があります。作業中は以下の事柄に注意してください。
+ 1 つのチャネルには最大 1 つのチャネルフローを関連付けることができます。チャネルフローを関連付けるには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_AssociateChannelFlow.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_AssociateChannelFlow.html) API を呼び出します。
+ チャネルフローの関連付けを解除し、チャネルメッセージの前処理を停止するには、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DisassociateChannelFlow.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DisassociateChannelFlow.html) API を呼び出します。

# Amazon Chime SDK メッセージングでのメッセージの送信
<a name="sending-msgs"></a>

`SendChannelMessage` API を使用してチャネルにメッセージを送信します。チャネルフローに関連付けられたチャネルには、プロセッサが以下のステータス値のいずれかを割り当てます。




| メッセージのステータス | 説明 | 
| --- | --- | 
| `SENT` | メッセージは正常に処理されました。 | 
| `PENDING` | 処理中です。 | 
| `FAILED` | プロセッサ Lambda 関数にアクセスできないため、処理に失敗しました。 | 
| `DENIED` | メッセージは送信されません。 | 

**中間ステータスイベントの受信**  
**Websocket イベント**

Websocket イベントは、接続が正常に確立された後にチャネルに送信されます。詳細については、[WebSockets を使用して Amazon Chime SDK メッセージングでメッセージを受信する](websockets.md) を参照してください。


| イベントタイプ | ステータス | 受取人 | 注意事項 | 
| --- | --- | --- | --- | 
| `CREATE_CHANNEL_MESSAGE` | `SENT` | チャネルメンバー全員 | 前処理が正常に終了した `SendChannelMessage` API | 
| `UPDATE_CHANNEL_MESSAGE` | `SENT` | チャネルメンバー全員 | 前処理が正常に終了した `UpdateChannelMessage` API | 
| `PENDING_CREATE_CHANNEL_MESSAGE` | `PENDING` | メッセージ送信者のみ | 前処理が進行中の `SendChannelMessage` API | 
| `PENDING_UPDATE_CHANNEL_MESSAGE` | `PENDING` | メッセージ送信者のみ | 前処理が進行中の `UpdateChannelMessage` API | 
| `FAILED_CREATE_CHANNEL_MESSAGE` | `FAILED` | メッセージ送信者のみ | 前処理に失敗した `SendChannelMessage` API | 
| `FAILED_UPDATE_CHANNEL_MESSAGE` | `FAILED` | メッセージ送信者のみ | 前処理に失敗した `UpdateChannelMessage` API | 
| `DENIED_CREATE_CHANNEL_MESSAGE` | `DENIED` | メッセージ送信者のみ | プロセッサがメッセージを拒否した `SendChannelMessage` API | 
| `DENIED_UPDATE_CHANNEL_MESSAGE` | `DENIED` | メッセージ送信者のみ | プロセッサがメッセージを拒否した `UpdateChannelMessage` API | 

**GetChannelMessageStatus API**  
この API は、Websocket 接続に問題があるためにイベントが受信されなかった場合に、メッセージステータスを取得する代替方法を提供します。詳細については、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetChannelMessageStatus.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetChannelMessageStatus.html) API ドキュメントを参照してください。

**注記**  
この API では、拒否されたメッセージのステータスは保存されないため、返されません。

# Amazon Chime SDK メッセージング用の EventBridge を使用した自動化による障害アラートの作成
<a name="event-bridge-events"></a>

Amazon Chime SDK は、プロセッサ Lambda 関数の呼び出しでエラーが発生した場合にイベントを配信します。イベントは、チャネルフローの作成時にプロセッサに指定された `Fallback` アクションに関係なく送信されます。単純なルールを記述して、これらのイベントと、イベントのいずれかがルールに一致した場合に実行する自動アクションを指定できます。詳細については、[Amazon EventBridge ユーザーガイド](https://docs.aws.amazon.com/eventbridge/latest/userguide/)を参照してください。このようなエラーが発生すると、設定した `Fallback` アクションによっては、チャネルのメンバーがメッセージを送信できなくなったり、メッセージが処理されずにチャネルを通過したりします。`Fallback` アクションの詳細については、「Amazon Chime SDK API リファレンス」の「[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Processor.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Processor.html)」を参照してください。

この例は、一般的な障害イベントを示しています。

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-111122223333",
    "detail-type": "Chime ChannelFlow Processing Status",
    "source": "aws.chime",
    "account": "111122223333",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "region",
    "resources": [],
    "detail": {
        "eventType": "ProcessorInvocationFailure",
        "appInstanceArn": "arn:aws:chime:region:AWSAccountId:app-instance/AppInstanceId",
        "channelArn": "arn:aws:chime:region:AWSAccountId:app-instance/AppInstanceId/channel/ChannelId",
        "messageId": "298efac7298efac7298efac7298efac7298efac7298efac7298efac7298efac7",
        "processorResourceArn": "arn:aws:lambda:region:AWSAccountId:function:ChannelFlowLambda",
        "failureReason": "User is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:region:AppInstanceId:function:ChannelFlowLambda because no resource-based policy allows the lambda:InvokeFunction action"
      }
}
```

# AppInstanceBots を Amazon Chime SDK メッセージングのインテリジェントチャネルエージェントとして使用する
<a name="appinstance-bots"></a>

`AppInstanceBots` はインテリジェントなチャネルエージェントとして使用できます。エージェントは、チャネルメンバーによって `ChannelMessages` から送信されたキーフレーズを認識します。ボットの自然言語理解モデルがメッセージを解決します。これにより、1 人以上のチャネルメンバーが、ボットのモデルによって定義された自然言語ダイアログに参加できるようになります。ボットを提供することで、対話の深さとエンタープライズシステムとの統合を制御できます。

**前提条件**
+ Amazon Chime SDK の基本機能 (`AppInstanceUsers` の作成、チャネルの管理、メッセージの送受信など) に関する知識。
+ Amazon Chime SDK メッセージング API を呼び出す機能。
+ Amazon Lex V2 ボットの作成、インテントとスロットのモデリング、ボットのバージョン、エイリアスの作成、セッション状態の使用、Lambda フックの統合など、Amazon Lex V2 の基本的な機能に関する知識。

**重要**  
Amazon Lex V2 の使用には、AWS 機械学習および人工知能サービスに固有の条件を含む [AWS サービス条件](https://aws.amazon.com/service-terms/)が適用されます。

**Topics**
+ [Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットの作成](create-lex-bot.md)
+ [Amazon Chime SDK メッセージング用の AppInstance ボットのセットアップ](appinstance-bot-setup.md)
+ [Amazon Chime SDK メッセージング用の AppInstanceBot のチャネルメンバーシップの作成](channel-membership.md)
+ [Amazon Chime SDK メッセージング用の AppInstanceBot にメッセージを送信する](message-appinstancebot.md)
+ [Amazon Chime SDK メッセージング用の Amazon Lex からのメッセージの処理](process-from-lexv2.md)
+ [Amazon Chime SDK メッセージング用の AppInstanceBot からのレスポンスの処理](process-response.md)
+ [ルールを使用して Amazon Chime SDK メッセージング用の Amazon EventBridge にイベントを送信する](event-bridge-alerts.md)
+ [Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットで設定された AppInstanceBots のトラブルシューティング](troubleshoot-lex-bots.md)

# Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットの作成
<a name="create-lex-bot"></a>

AppInstance ボットをエージェントとして使用するには、まず Amazon Lex V2 ボットを作成して、インテリジェントエージェントシナリオでのダイアログインタラクションを管理する必要があります。Amazon Lex V2 ボットの構築を開始するには、「Amazon Lex V2 開発者ガイド」の「[Amazon Lex V2 の開始方法](https://docs.aws.amazon.com/lexv2/latest/dg/getting-started.html)」を参照してください。Amazon Lex V1 ボットから Amazon Lex V2 への移行については、「[Amazon Lex V1 から V2 への移行ガイド](https://docs.aws.amazon.com/lexv2/latest/dg/migration.html)」を参照してください。

**Topics**
+ [前提条件](#lex-prereqs)
+ [呼び出しアクセス許可の付与](#invocation-perms)
+ [Amazon Chime SDK メッセージングの挨拶のインテントの作成](welcome-intent.md)
+ [Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットバージョンの作成](lex-versions.md)
+ [Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットエイリアスの作成](lex-aliases.md)

## 前提条件
<a name="lex-prereqs"></a>

Amazon Lex V2 ボットは以下の前提条件を満たしている必要があります。
+ Amazon Lex V2 ランタイムエンドポイントをサポートする AWS リージョンでボットを作成する必要があります。
+ ボットは、 および と同じ AWS アカウントとリージョンに作成する必要があります`AppInstance``AppInstanceBot`。
+ ボットは、リソースベースのポリシーを介して `messaging.chime.amazonaws.com` サービスプリンシパルに呼び出し許可を付与する必要があります。
+ ボットは挨拶のインテントをモデル化できます。これにより、`AppInstanceBot` はチャネルのメンバーシップの取得時に自身とその機能をアナウンスできます。
+ `AppInstanceBot` を設定するには、ボットの製品版とエイリアスが必要です。
+ ボットはサポートされている言語とロケールを使用する必要があります。言語とロケールの詳細については、「Amazon Lex V2 開発者ガイド」の「[Amazon Lex V2 でサポートされている言語とロケール](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html)」を参照してください。

## 呼び出しアクセス許可の付与
<a name="invocation-perms"></a>

`AppInstanceBot` が Amazon Lex V2 ボットを呼び出すには、Amazon Chime SDK メッセージングサービスのプリンシパルに Amazon Lex ボットリソースを呼び出すアクセス許可が付与されている必要があります。Amazon Lex V2 のリソースベースのポリシーアクセス許可の詳細については、「Amazon Lex V2 開発者ガイド」の「[Amazon Lex V2 のリソースベースのポリシーの例](https://docs.aws.amazon.com/lexv2/latest/dg/security_iam_resource-based-policy-examples.html)」を参照してください。

以下に、リソースベースのポリシーの例を示します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "messaging.chime.amazonaws.com"
      },
      "Action": [
        "lex:PutSession",
        "lex:DeleteSession",
        "lex:RecognizeText"
      ],
      "Resource": "arn:aws:lex:us-east-1:111122223333:bot-alias/lex-bot-id/lex-bot-alias-id",
      "Condition": {
        "StringEquals": {
        "AWS:SourceAccount": "111122223333"
        },
        "ArnEquals": {
        "AWS:SourceArn": "arn:aws:chime:us-east-1:111122223333:app-instance/app-instance-id/bot/app-instance-bot-id"
        }
      }
    }
  ]
}
```

------

**注記**  
`AppInstanceBot` が Amazon Lex V2 ボットを呼び出せるようにするには、AppInstanceBot の ID を使用します。`AppInstance` 内のすべての `AppInstanceBots` が Amazon Lex V2 ボットを呼び出せるようにするには、ワイルドカードを使用します。例えば、次のようになります。  
`arn:aws:chime:region:aws-account-id:app-instance/app-instance-id/bot/*`

# Amazon Chime SDK メッセージングの挨拶のインテントの作成
<a name="welcome-intent"></a>

Amazon Lex V2 ボットモデルに任意の挨拶のインテントを追加すると、`AppInstanceBot` がチャネルに参加したときに自身とその機能をアナウンスできます。挨拶のインテントはメッセージを表示したり、チャネルメンバーとの対話を開始したりできます。挨拶のインテントの名前はさまざまで、AppInstanceBot の設定で定義します。

インテントの詳細については、「Amazon Lex V2 開発者ガイド」の「[インテントの追加](https://docs.aws.amazon.com/lexv2/latest/dg/build-intents.html)」を参照してください。

# Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットバージョンの作成
<a name="lex-versions"></a>

Amazon Lex V2 ボットを作成する場合、作成するのはドラフトバージョンのみです。ドラフトはボットの作業用コピーで、更新できます。デフォルトでは、ドラフトバージョンには `TestBotAlias` と呼ばれるエイリアスが関連付けられているため、ドラフトボットは手動テストにのみ使用してください。

ダイアログのモデリングとドラフトボットの構築が完了したら、ドラフト Lex ボットの 1 つ以上のバージョン、つまり番号付きのスナップショットを作成します。バージョンを使用すると、クライアントアプリケーションで使用される実装を制御できます。例えば、開発、ベータデプロイ、本稼働など、ワークフローの異なる段階で使用するためにバージョンを発行できます。

Lex ボットのバージョニングの詳細については、「Amazon Lex V2 開発者ガイド」の「[バージョンの作成](https://docs.aws.amazon.com/lexv2/latest/dg/versions.html)」を参照してください。

# Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットエイリアスの作成
<a name="lex-aliases"></a>

Amazon Lex V2 ボットのバージョンを 1 つ以上作成したら、エイリアスを作成します。エイリアスは Amazon Lex V2 ボットのバージョンへの名前付きポインタとして機能します。例えば、エイリアスには、一度に 1 つのバージョンのみを関連付けることができます。

Lex ボットのエイリアスの詳細については、「Lex V2 開発者ガイド」の「[エイリアスの作成](https://docs.aws.amazon.com/lexv2/latest/dg/aliases.html)」を参照してください。

# Amazon Chime SDK メッセージング用の AppInstance ボットのセットアップ
<a name="appinstance-bot-setup"></a>

モデル、バージョン、エイリアスを指定した Amazon Lex V2 ボットを作成したら、Amazon Chime SDK メッセージング API または CLI を使用して AppInstanceBot を作成します。API の使用方法の詳細については、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_CreateAppInstanceBot.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_CreateAppInstanceBot.html) API のドキュメントを参照してください。

**注記**  
`InvokedBy` 属性を使用して、`AppInstanceBot` のダイアログインタラクション動作を設定します。標準メッセージやターゲットを絞ったメッセージなど、ボットをトリガーするメッセージの種類を設定できます。

次の例は、 CLI AWS を使用して、 を含むすべての標準メッセージ`MENTIONS`とターゲットメッセージが呼び出すことができる AppInstanceBot を作成する方法を示しています。

```
aws chime-sdk-identity create-app-instance-bot \
--app-instance-arn app-instance-arn \
--name app-instance-bot-name \
--configuration '{
   "Lex": {
      "LexBotAliasArn": "lex-bot-alias-arn",
      "LocaleId": "lex_bot_alias_locale_id",
      "InvokedBy": {
          "StandardMessages": "MENTIONS",
          "TargetedMessages": "ALL"
      }
      "WelcomeIntent": "welcome-intent-name"
   }
}
```

# Amazon Chime SDK メッセージング用の AppInstanceBot のチャネルメンバーシップの作成
<a name="channel-membership"></a>

AppInstanceBot を作成したら、新規または既存のチャネルにメンバーとして追加します。詳細については、「Amazon Chime SDK メッセージング API」ドキュメントの「[CreateChannel](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html)」と「[CreateChannelMembership](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)」を参照してください。

次の例は、 CLI AWS を使用してチャネルを作成し、メンバー`AppInstanceBot`として を追加する方法を示しています。

```
aws chime-sdk-messaging create-channel \
--chime-bearer caller_app_instance_user_arn \
--app-instance-arn app_instance_arn \
--name channel_name \
--member-arns '[
   "app_instance_bot_arn"
]'
```

次の例は、 CLI AWS を使用して既存のチャネル`AppInstanceBot`に を追加する方法を示しています。

```
aws chime-sdk-messaging create-channel-membership \
--chime-bearer caller_app_instance_user_arn \
--channel-arn channel_arn \
--member-arn app_instance_bot_arn
```

# Amazon Chime SDK メッセージング用の AppInstanceBot にメッセージを送信する
<a name="message-appinstancebot"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html) API を使用して AppInstanceBot にメッセージを送信します。メッセージは AppInstanceBot がメンバーになっているチャネルに送信します。[自然言語理解モデル](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)がメッセージの内容を認識して Amazon Lex のインテントを引き出すと、AppInstanceBot はチャネルメッセージで応答し、ダイアログを開始します。

ターゲットメッセージをチャネルのメンバー (AppInstanceUser や AppInstanceBot など) に送信することもできます。ターゲットを絞ったメッセージを閲覧できるのは、ターゲットと送信者だけです。ターゲットを絞ったメッセージに対してアクションを実行できるのは、そのメッセージを表示できるユーザーのみです。ただし、管理者は表示できなくてもターゲットを絞ったメッセージを削除できます。

次の例は、 CLI AWS を使用してチャネルメッセージを送信する方法を示しています。

```
aws chime-sdk-messaging send-channel-message \
--chime-bearer caller_app_instance_user_arn \
--channel-arn channel_arn \
--content content \
--type STANDARD \
--persistence PERSISTENT
```

# Amazon Chime SDK メッセージング用の Amazon Lex からのメッセージの処理
<a name="process-from-lexv2"></a>

Amazon Lex にメッセージを送信すると、Amazon Chime SDK メッセージングは、チャネルと送信者の ARN 情報をリクエスト属性として `CHIME.channel.arn` と `CHIME.sender.arn` に入力します。この属性を使用して、メッセージの送信者と、送信者が所属するチャネルを特定できます。詳細については、*Amazon Lexデベロッパーガイド*」の[AWS 「Lambda 関数を使用したカスタムロジックの有効化](https://docs.aws.amazon.com/lexv2/latest/dg/lambda.html)」を参照してください。

# Amazon Chime SDK メッセージング用の AppInstanceBot からのレスポンスの処理
<a name="process-response"></a>

ユーザーがメッセージを送信すると、AppInstanceBot はチャネルメッセージで応答します。チャネルメッセージを一覧表示して、ボットのレスポンスを取得できます。

次の例は、CLI を使用してチャネルメッセージを一覧表示する方法を示しています。

```
aws chime-sdk-messaging list-channel-messages \
--chime-bearer caller_app_instance_user_arn \
--channel-arn channel_arn
```

AppInstanceBot からの成功レスポンスは以下の形式になります。

```
{
    "MessageId": "messageId",
    "Content": "*{\"Messages\":[{\"...\"}]}*",
    "ContentType": "application/amz-chime-lex-msgs",
    "MessageAttributes": {
        "CHIME.LEX.sessionState.intent.name": {
            "StringValues": [
                "lex_bot_intent_name"
            ]
        },
        "CHIME.LEX.sessionState.intent.state": {
            "StringValues": [
                "lex_bot_intent_fullfilment_status"
            ]
        },
        "CHIME.LEX.sessionState.originatingRequestId": {
            "StringValues": [
                "lex_bot_originating_request_id"
            ]
        },
        "CHIME.LEX.sessionState.sessionId": {
            "StringValues": [
                "lex_bot_session_id"
            ]
        }
    },
    "Sender": {
        "Arn": "app_instance_bot_arn",
        "Name": "app_instance_bot_name"
    },
    "Type": "STANDARD",
}
```

**Content**  
`Content` フィールドには Amazon Lex V2 ボットから送信されるメッセージのリストが含まれます。これらのメッセージの詳細については、Amazon Lex V2 `RecognizeText` API の「[メッセージ](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html#lexv2-runtime_RecognizeText-response-messages)」を参照してください。  
以下の例は、挨拶のメッセージで `Content` フィールドを使用する方法を示しています。  

```
{
    "Messages":
    [
        {
            "Content": "Hello!",
            "ContentType": "PlainText"
        },
        {
            "ContentType": "ImageResponseCard",
            "ImageResponseCard":
            {
                "Title": "Hello! I'm BB, the Bank Bot.",
                "Subtitle": "I can help you with the following transactions",
                "Buttons":
                [
                    {
                        "Text": "Check balance",
                        "Value": "Check balance"
                    },
                    {
                        "Text": "Escalate to agent",
                        "Value": "Escalate to agent"
                    }
                ]
            }
        }
    ]
}
```
失敗レスポンスの場合、[コンテンツ] フィールドには以下の形式のエラーメッセージとコードが含まれます。  

```
{
    "Code": error_code
}
```

**ContentType**  
`ContentType` は `Content` フィールドに含まれるペイロードのタイプを指し、`Content` フィールドを解析するにはこれをチェックする必要があります。  
Lex V2 ボットは別の `ContentType` を使用します。
`ContentType` は成功レスポンスの場合は `application/amz-chime-lex-msgs` に、失敗レスポンスの場合は `application/amz-chime-lex-error` に設定されます。

**MessageAttribute**  
*MessageAttribute* は、文字列キーから文字列値へのマッピングです。`AppInstanceBot` からのレスポンスには、Amazon Lex ボットからのレスポンスにマッピングされた以下のメッセージ属性が含まれます。  
+ **CHIME.LEX.sessionState.intent.name** — リクエストが処理しようとした Lex ボットのインテントの名前。
+ **CHIME.LEX.sessionState.intent.state** — インテントの現在の状態。指定できる値には、`Fulfilled`、`InProgress`、`Failed` などがあります。
+ **CHIME.LEX.sessionState.originatingRequestId** — Amazon Lex ボットへの特定のリクエストを表す一意の識別子。これは AppInstanceBot をトリガーした送信元のユーザーメッセージの `MessageId` に設定されます。
+ **CHIME.LEX.sessionState.sessionId** — ユーザーとボットの間の会話を識別する一意の識別子。ユーザーがボットとのチャットを開始すると、Amazon Lex によりセッションが作成されます。
Amazon Lex セッションとセッション状態の詳細については、「*Amazon Lex API リファレンス*」の「[https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html)」と、「*Amazon Lex V2 開発者ガイド*」の「[セッションの管理](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html)」を参照してください。  
Amazon Lex V2 が返す属性の詳細については、「[Amazon Lex ランタイム V2](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_Operations_Amazon_Lex_Runtime_V2.html)」API を参照してください。

# ルールを使用して Amazon Chime SDK メッセージング用の Amazon EventBridge にイベントを送信する
<a name="event-bridge-alerts"></a>

Amazon Chime SDK は、エラーが原因で Amazon Lex V2 ボットを呼び出せなくなった場合、EventBridge イベントを配信します。それらのイベントを認識し、ルールが一致したときに自動的にアクションを実行する EventBridge ルールを作成できます。詳細については、「Amazon EventBridge ユーザーガイド」の「[Amazon EventBridge ルール](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)」を参照してください。

次の例は、一般的な失敗イベントを示しています。

```
{
  version: '0',
  id: '12345678-1234-1234-1234-111122223333',
  'detail-type': 'Chime Messaging AppInstanceBot Lex Failure',
  source: 'aws.chime',
  account: 'aws-account-id',
  time: 'yyyy-mm-ddThh:mm:ssZ',
  region: "region",
  resources: [],
  detail: {    
    resourceArn: 'arn:aws:chime:region:aws-account-id:app-instance/app-instance-id/bot/app-instance-bot-id',
    failureReason: "1 validation error detected: Value at 'text' failed to satisfy constraint: Member must have length less than or equal to 1024 (Service: LexRuntimeV2, Status Code: 400, Request ID: request-id)"
  }
}
```

# Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットで設定された AppInstanceBots のトラブルシューティング
<a name="troubleshoot-lex-bots"></a>

以下のトピックでは、AppInstanceBots の一般的な問題のトラブルシューティング方法を説明します。

## Amazon Lex V2 の障害の検出
<a name="find-lex-failures"></a>

Amazon Chime SDK メッセージングは、エラーが原因で Amazon Lex V2 ボットを呼び出せなくなった場合、[Amazon EventBridge イベント](https://docs.aws.amazon.com/chime-sdk/latest/dg/event-bridge-alerts.html)を配信します。ルールの設定と通知ターゲットの設定の詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Getting started with Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html)」を参照してください。

 AWS CloudWatch Logs で EventBridge イベントを受信した場合、CloudWatch Logs Insights を使用して AWS 、Amazon Chime SDK メッセージングの詳細タイプに基づいて EventBridge イベントをクエリできます。`failureReason` には障害の原因が一覧表示されます。

以下に、一般的なクエリの例を示します。

```
fields @timestamp, @message
| filter `detail-type` = "Chime Messaging AppInstanceBot Lex Failure"
| sort @timestamp desc
```

Amazon Chime SDK メッセージングが Amazon Lex V2 ボットを呼び出すことができる場合、SDK はエラーメッセージと共に `CONTROL` メッセージを送信します。

## Amazon Lex V2 ボットのアクセス許可エラーのトラブルシューティング
<a name="lex-permission-errors"></a>

AppInstanceBot が Amazon Lex V2 ボットを呼び出すには、Amazon Chime SDK メッセージングサービスのプリンシパルに Amazon Lex V2 ボットリソースを呼び出すアクセス許可が付与されている必要があります。また、リソースポリシー条件の `AWS:SourceArn` が AppInstanceBot の ARN と一致していることを確認してください。

Amazon Lex V2 ボットを呼び出すように AppInstanceBot を設定する方法の詳細については、このセクションの前半にある「[Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットの作成](create-lex-bot.md)」を参照してください。

## Amazon Lex V2 ボットスロットリングのトラブルシューティング
<a name="lex-throttling"></a>

Amazon Lex には、ボットエイリアスごとにテキストモードでの同時会話の最大数に関するサービスクォータがあります。クォータの増量については、Amazon Lex サービスチームにお問い合わせください。詳細については、「*Amazon Lex デベロッパーガイド*」の「[Amazon Lex guidelines and quotas](https://docs.aws.amazon.com/lexv2/latest/dg/quotas.html)」を参照してください。

# Amazon Chime SDK メッセージングのメッセージ保持の管理
<a name="manage-retention"></a>

アカウントオーナーは Amazon Chime SDK API を使用してメッセージング保持を有効にできます。メッセージは、管理者が設定した期間に基づいて自動的に削除されます。保持期間は 1 日から 15 年です。API を使用して、いつでもメッセージ保持期間を更新したり、メッセージ保持をオフにしたりすることもできます。

**Topics**
+ [CLI 保持コマンドの例](#retention-examples)
+ [メッセージ保持を有効にする](#enable-retention)
+ [メッセージの復元と削除](#restore-and-delete)

## CLI 保持コマンドの例
<a name="retention-examples"></a>

以下の例は、保持の標準的な CLI コマンドを示しています。

**有効化**

`aws chime-sdk-identity put-app-instance-retention-settings --app-instance-arn {appInstanceArn} --app-instance-retention-settings ChannelRetentionSettings={RetentionDays=60}`

**[更新中]**

`aws chime-sdk-identity put-app-instance-retention-settings --app-instance-arn {appInstanceArn} --app-instance-retention-settings ChannelRetentionSettings={RetentionDays=30}`

**無効化**

`aws chime-sdk-identity put-app-instance-retention-settings --app-instance-arn {appInstanceArn} --app-instance-retention-settings ChannelRetentionSettings={}`

## メッセージ保持を有効にする
<a name="enable-retention"></a>

Amazon Chime SDK API を使用してメッセージング保持を有効にします。API を使用して、いつでもメッセージ保持期間を更新したり、メッセージ保持をオフにしたりすることもできます。メッセージング保持の設定の詳細については、「[Amazon Chime SDK API Reference](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/Welcome.html)」を参照してください。

## メッセージの復元と削除
<a name="restore-and-delete"></a>

メッセージ保持期間を設定または更新してから 30 日以内にユーザーへのメッセージを復元できます。ただし、30 日間の猶予期間が過ぎると、保持期間に該当するすべてのメッセージは完全に削除され、新しいメッセージは保持期間を過ぎると完全に削除されます。

**注記**  
30 日間の猶予期間中に、保持ポリシーを延長するかオフにすると、新しい保持期間を過ぎていないメッセージがアカウント内のユーザーに再び表示されるようになります。

また、`AppInstanceUser` がチャネルまたはメッセージを削除すると、メッセージは完全に削除されます。

# Amazon Chime SDK メッセージングのユーザーインターフェイスコンポーネント
<a name="ui-components"></a>

コンポーネントライブラリを使用すると、チャットメッセージングのユーザーインターフェイスを構築するのに必要な労力を軽減できます。詳細については、GitHub の「[Amazon Chime React Component Library](https://github.com/aws/amazon-chime-sdk-component-library-react)」を参照してください。

# Amazon Chime SDK メッセージングとクライアントライブラリの統合
<a name="integrate-client-library"></a>

Amazon Chime SDK のメッセージング機能を使用するには、クライアントアプリケーションを以下のクライアントライブラリと統合する必要があります。
+ **AWS SDK** – メッセージの送信とリソースの管理のための APIs が含まれています。
+ **JavaScript 用 Amazon Chime SDK クライアントライブラリ (NPM)** — TypeScript タイプ定義を含む JavaScript ライブラリです。クライアントを Amazon Chime SDK メッセージングウェブソケットと統合してメッセージを受信するのに役立ちます。

クライアントアプリケーションを Amazon Chime SDK と統合するには、クライアントライブラリ README.md の手順を参照し、デモを使用してメッセージング機能の構築方法を学んでください。

# JavaScript で Amazon Chime SDK メッセージングを使用する
<a name="use-javascript"></a>

JavaScript を使用して Amazon Chime SDK リソースを管理し、メッセージを送信できます。詳細については、「[AWS JavaScript SDK](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Chime.html)」を参照してください。

クライアントアプリケーションでメッセージングセッションを作成して、Amazon Chime SDK メッセージングからメッセージを受信することもできます。詳細については、GitHub の「[Using the Amazon Chime SDK client library for JavaScript](https://github.com/aws/amazon-chime-sdk-js/blob/master/README.md)」を参照してください。