使用 Amazon Chime SDK 会议的会议区域
Amazon Chime SDK 会议具有控制区域和媒体区域。控制区域提供用于创建、更新和删除会议的 API 终端节点。媒体区域主持实际会议。
通常,您的应用程序服务使用 AWS SDK
控制区域可以在同一 AWS 分区的任何媒体区域中创建会议。但是,您只能在用于创建会议的控制区域中更新会议。要查找离客户最近的媒体区域,请登录 https://nearest-media-region.l.chime.aws
会议控制区域中的会议事件,例如 AttendeeJoined
调用 EventBridge、Amazon Simple Queue Service (SQS) 或 Amazon Simple Notificion Service (SNS)。
有关可用的 Amazon Chime SDK 会议控制和媒体区域的列表,请参阅本指南中的 Amazon Chime SDK 可用的 AWS 区域。
此图表显示了通过控制区域和媒体区域的典型数据流。
选择控制区域
在为 Amazon Chime SDK 会议选择控制区域时,请记住以下因素:
-
监管要求。您的应用程序是否需要在地缘政治边界内,或者使用带有 FIPS 140-2 验证的加密模块的终端节点?
-
API 延迟。使用距离应用程序服务的 AWS 区域最近的控制区域可以帮助缩短 API 的网络延迟。反过来,这有助于减少创建会议所需的时间,让用户更快地加入会议。
-
高可用性。您可以使用多个控制区域来实现高可用性架构。但是,每个控制区域都是独立运行的。而且,您只能在用于创建会议的控制区域中更新会议。此外,您必须使用相同的区域通过 EventBridge、Amazon Simple Queue Service (SQS) 或 Amazon Simple Notification Service (SNS) 使用会议事件。
选择媒体区域
注意
我们建议您始终在 CreateMeeting API 操作的 MediaRegion
参数中指定一个值。有关“区域”的更多信息,请参阅 Amazon Chime SDK 可用的 AWS 区域。
在为您的 Amazon Chime SDK 会议选择媒体区域时,考虑以下常见因素:
- 监管要求
-
如果您的 Amazon Chime SDK 会议需要根据法规要求在地缘政治边界内托管,则考虑根据固定的应用程序逻辑对会议区域进行硬编码。
例如,远程医疗应用程序可能需要将所有会议托管在执业医生的管辖范围内。如果应用程序支持位于欧洲和美国的诊所,则您可以通过每家诊所的地址选择其管辖范围内的区域。
- 会议质量
-
在媒体区域托管 Amazon Chime SDK 会议时,每个与会者的音频和视频都从该地区发送和接收。随着与会者与区域之间距离的增加,会议质量可能会受到网络延迟的影响。为您的 Amazon Chime SDK 会议指定区域有助于提高与会者的会议质量,无论他们彼此靠近还是分布在不同的地理位置。
您可以使用以下任一方法为 Amazon Chime SDK 会议选择媒体区域:
- 对媒体区域进行硬编码
-
如果您的 Amazon Chime SDK 会议全部在特定 AWS 区域托管,则建议采用这种方法。
- 选择最近的媒体区域
-
如果您的 Amazon Chime SDK 会议与会者处于同一 AWS 区域,但您的会议在不同区域托管,则建议采用这种方法。
查找最近的媒体区域
要查找能够托管 Amazon Chime SDK 会议的最近媒体区域,请登录 https://nearest-media-region.l.chime.aws{"region": "us-west-2"}
。从您的客户端应用程序中调用 URL 标识距离用户最近的区域,然后使用 CreateMeeting API 的 MediaRegion
参数中的结果在该区域创建会议。
通常在客户端应用程序启动或其网络连接更改时调用 URL。通过预先确定最近的区域,可以避免在创建会议时增加调用的延迟。
查找最近的 AWS GovCloud (US) 媒体区域
要查找能够托管 Amazon Chime SDK 会议的最近 AWS GovCloud (US) 媒体区域,请登录 https://nearest-us-gov-media-region.l.chime.aws{"region": "us-gov-west-1"}
。从您的客户端应用程序中调用 URL 标识距离用户最近的 AWS GovCloud(美国),然后使用 CreateMeeting API 的 MediaRegion
参数中的结果在该区域创建会议。
通常在客户端应用程序启动或其网络连接更改时调用 URL。通过预先确定最近的区域,可以避免在创建会议时增加调用的延迟。
JavaScript 示例
以下示例使用 HTML 和 JavaScript 返回最近的媒体区域和 AWS GovCloud (US) 媒体区域。
<html> <head> <title>Amazon Chime SDK - Nearest Media Region</title> <script> async function getNearestMediaRegion(partition) { console.log('Nearest media region partition: ' + partition); const url = ('aws-us-gov' == partition) ? 'https://nearest-us-gov-media-region.l.chime.aws' : 'https://nearest-media-region.l.chime.aws'; let result = ('aws-us-gov' == partition) ? 'us-gov-west-1' : 'us-west-2'; try { //Find the nearest media region console.log('Nearest media region URL: ' + url); const response = await fetch(url, {method: 'GET'} ); const body = await response.json(); result = body.region; } catch (error) { console.log(error.message); } finally { console.log('Nearest media region found: ' + result); return result; } } async function findRegions(partition) { aws.innerText = await getNearestMediaRegion(); awsusgov.innerText = await getNearestMediaRegion('aws-us-gov'); } </script> </head> <body> <h3>Nearest media region, by AWS partition</h3> <table> <tr><th>Partition</th><th>Media Region</th></tr> <tr><td>aws</td><td id="aws">Finding...</td></tr> <tr><td>aws-us-gov</td><td id="awsusgov">Finding...</td></tr> </table> <script> findRegions(); </script> </body> </html>
检查区域状态
登录 https://region.status.chime.aws/
以下示例显示典型结果。
{ "MeetingsControlRegions": { "us-east-1": "recommended", "us-west-2": "recommended", "ap-southeast-1": "recommended", "eu-central-1": "recommended" }, "MeetingsMediaRegions": { "af-south-1": "recommended", "ap-northeast-1": "recommended", "ap-northeast-2": "recommended", "ap-south-1": "recommended", "ap-southeast-1": "recommended", "ap-southeast-2": "recommended", "ca-central-1": "recommended", "eu-central-1": "recommended", "eu-north-1": "recommended", "eu-south-1": "recommended", "eu-west-1": "recommended", "eu-west-2": "recommended", "eu-west-3": "recommended", "sa-east-1": "recommended", "us-east-1": "recommended", "us-east-2": "recommended", "us-west-1": "recommended", "us-west-2": "recommended" }, "MediaPipelineControlRegions": { "ap-southeast-1": "recommended", "eu-central-1": "recommended", "us-east-1": "recommended", "us-west-2": "recommended" }, "MediaPipelineDataRegions": { "af-south-1": "recommended", "ap-northeast-1": "recommended", "ap-northeast-2": "recommended", "ap-south-1": "recommended", "ap-southeast-1": "recommended", "ap-southeast-2": "recommended", "ca-central-1": "recommended", "eu-central-1": "recommended", "eu-north-1": "recommended", "eu-south-1": "recommended", "eu-west-1": "recommended", "eu-west-2": "recommended", "eu-west-3": "recommended", "sa-east-1": "recommended", "us-east-1": "recommended", "us-east-2": "recommended", "us-west-1": "recommended", "us-west-2": "recommended" } }