

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 如何从后端服务发出 SDK 调用以便进行 Amazon Chime 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 消息 APIs 都以参数`chime-bearer`为参数 APIs ，但只能由开发者调用，例如。`CreateAppInstance`

Amazon Chime 软件开发工具包消息的 IAM 权限 APIs 需要与`app-instance-user-arn `参数匹配的。`chime-bearer`根据 API， ARNs可能需要额外的 ARNs（通常是渠道）。对于像上面示例这样的后端服务，这会导致 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 策略示例向后端服务授予以 ID 为 “” 的用户身份进行 API 调用的权限back-end-worker。 如果您希望您的后端服务能够为使用您的应用程序的用户拨打电话，请将更改`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 软件开发工具包消息还 APIs 具有隐式权限。例如，`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"
```