View a markdown version of this page

如何从后端服务发出 SDK 调用以便进行 Amazon Chime SDK 消息传递 - Amazon Chime SDK

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

如何从后端服务发出 SDK 调用以便进行 Amazon Chime SDK 消息传递

创建代表后端服务的用户后,您就可以创建一个频道,向该频道发送消息,并从该频道读取消息。

运行以下 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.

后端服务的 IAM 授权是如何运作的

在上一节的 CLI 命令中,记下该 chime-bearer 参数。它识别创建频道和消息等资源或与之交互的用户。几乎所有 Amazon Chime SDK 消息传递 API 都以 chime-bearer 为参数,但本来只能由开发人员调用的 API 除外,例如 CreateAppInstance

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 策略示例向后端服务授予权限,可作为具有“后端工作人员”ID 的用户进行 API 调用。如果您希望后端服务能够调用使用应用程序的用户,请将 app_instance_user_arn 更改为 arn:aws:chime:region:aws_account_id:app-instance/app_instance_id/user/*

了解隐式 API 授权

除了 IAM 策略外,Amazon Chime SDK 消息传递 API 还具有隐式权限。例如,AppInstanceUser 只能发送消息或列出用户所属频道的频道成员资格。其中一个例外情况是提升为 AppInstanceAdminAppInstanceUser。默认情况下,管理员有权访问应用程序中的所有频道。对于大多数用例,只有包含重要业务逻辑的后端服务才需要此功能。

以下 CLI 命令将后端用户提升为管理员。

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

发送和列出频道消息

以下 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"