Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Amazon Cognito 流

注意

如果您是 Amazon Cognito Sync 的新用户,请使用 AWS AppSync。与 Amazon Cognito Sync 相似,AWS AppSync 是一项在不同设备之间同步应用程序数据的新服务。

它使应用程序首选项或游戏状态等用户数据能够实现同步。它还允许多名用户针对共享数据进行实时同步和协作,从而扩展了这些功能。

Amazon Cognito 流让开发人员能够控制和了解他们存储在 Amazon Cognito 中的数据。现在,开发人员可以配置 Kinesis 流,以便在数据更新和同步时接收事件。Amazon Cognito 可以实时向您拥有的 Kinesis 流推送每个数据集更改。

使用 Amazon Cognito 流,您可以将所有的同步数据移动到 Kinesis,然后将其流式传输到数据仓库工具 (如 Amazon Redshift),供进一步分析。要了解有关 Kinesis 的更多信息,请参阅开始使用 Amazon Kinesis

配置流

您可以在 Amazon Cognito 控制台中设置 Amazon Cognito 流。要在 Amazon Cognito 控制台中启用 Amazon Cognito 流,您需要选择要将它发布到哪个 Kinesis 流,以及授权 Amazon Cognito 将事件放入选定流中的 IAM 角色。

控制台主页

  1. 单击要为其设置 Amazon Cognito 流的身份池的名称。此时将显示身份池的 Dashboard 页。

  2. Dashboard 页的右上角,单击 Manage Federated Identities。出现 Manage Federated Identities 页面。

  3. 向下滚动,并单击 Cognito Streams,以将其展开。

  4. Stream name 下拉菜单中,选择一个现有 Kinesis 流的名称。或者,单击 Create stream 创建一个流,输入流的名称和分片数量。要了解分区,并在如何估算流需要的分区数方面获取帮助,请参阅 Kinesis 开发人员指南

  5. Publish role 下拉菜单中,选择授予 Amazon Cognito 发布流的权限的 IAM 角色。在 AWS IAM 控制台中,单击 Create role 创建或修改与身份池关联的角色。

  6. Stream status 下拉菜单中,选择 Enabled 以启用流更新。单击 Save Changes

成功配置 Amazon Cognito 流之后,此身份池中数据集的所有后续更新都会发送到此流中。

流内容

发送到流的每个记录都代表一次同步。以下是一个发送到流的记录示例:

{ "identityPoolId": "Pool Id", "identityId": "Identity Id", "dataSetName": "Dataset Name", "operation": "(replace|remove)", "kinesisSyncRecords": [ { "key": "Key", "value": "Value", "syncCount": 1, "lastModifiedDate": 1424801824343, "deviceLastModifiedDate": 1424801824343, "op": "(replace|remove)" }, ... ], "lastModifiedDate": 1424801824343, "kinesisSyncRecordsURL": "S3Url", "payloadType": "(S3Url|Inline)", "syncCount": 1 }

对于大于 Kinesis 最大负载大小 50 KB 的更新,将添加预签名 Amazon S3 URL,其中包含完整的更新内容。

配置 Amazon Cognito 流之后,如果您删除 Kinesis 流或更改角色信任权限,以便它不再由 Amazon Cognito Sync 承担,则 Amazon Cognito 流将禁用。您需要重新创建 Kinesis 流或修复角色,然后需要重新启用此流。

批量发布

配置 Amazon Cognito 流之后,您能够对身份池中的现有数据执行批量发布操作。通过控制台或直接通过 API 启动批量发布操作之后,Amazon Cognito 会开始将此数据发布到接收更新的同一流中。

Amazon Cognito 不保证在使用批量发布操作时发送到流的数据具有唯一性。您可能会收到两个相同的更新,一个来自更新操作,一个属于批量发布。在处理来自流的记录时,请记住这一点。

要批量发布所有流,请执行“配置流”下的步骤 1-6,然后单击“Start bulk publish”。任何特定时间都只能有一个正在进行的批量发布操作,且每 24 小时只能有一次成功的批量发布请求。