

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 實作 Amazon Cognito Sync 串流
<a name="cognito-streams"></a>

****  
如果您第一次使用 Amazon Cognito Sync，請改用 [AWS AppSync](https://aws.amazon.com/appsync/)。如同 Amazon Cognito Sync， AWS AppSync 是一種跨裝置同步應用程式資料的服務。  
可同步使用者資料，如應用程式偏好設定或遊戲狀態。也擴充這些功能，允許多個使用者在共用資料上即時同步及協作。

Amazon Cognito 串流可讓開發人員控制並深入了解其存放在 Amazon Cognito 中的資料。開發人員現在可以設定 Kinesis 串流，以在資料更新及同步時接收事件。Amazon Cognito 可以即時將每項資料集變更推送至您擁有的 Kinesis 串流。

您可以使用 Amazon Cognito 串流將所有同步資料移到 Kinesis，然後 Kinesis 會串流至諸如 Amazon Redshift 的資料倉儲工具，供進一步分析。若要進一步了解 Kinesis，請參閱 [Amazon Kinesis 入門](https://docs.aws.amazon.com/kinesis/latest/dev/getting-started.html)。

**設定串流**

您可以在 Amazon Cognito 主控台中設定 Amazon Cognito 串流。若要在 Amazon Cognito 主控台中啟用 Amazon Cognito 串流，您需要選取 Kinesis 串流 (發佈的目標)，以及 IAM 角色 (授予將事件放在所選串流中的 Amazon Cognito 許可)。

從[主控台首頁](https://console.aws.amazon.com/cognito/home)：

1. 針對要設定 Amazon Cognito 串流的身分集區，按一下其名稱。該身分集區的 **Dashboard** (儀表板) 頁面隨即出現。

1. 在 **Dashboard (儀表板)** 頁面右上角，按一下 **Manage Identity Pools (管理身分集區)**。Manage Federated Identities (管理聯合身分) 頁面隨即出現。

1. 向下捲動，然後按一下 **Cognito Streams (Cognito 串流)** 將其展開。

1. 在 **Stream name (串流名稱)** 下拉式選單中，選取現有 Kinesis 串流的名稱。或者，按一下 **Create stream (建立串流)**，輸入串流名稱和碎片數量，以建立串流。若要了解碎片並取得預估串流所需碎片數量的協助，請參閱 [Kinesis 開發人員指南](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html)。

1. 在 **Publish role (發佈角色)** 下拉式選單中，選取授予 Amazon Cognito 許可的 IAM 角色來發佈串流。按一下 **Create role (建立角色)**，在 [AWS IAM 主控台](https://console.aws.amazon.com/iam/home)中建立或修改與身分集區相關聯的角色。

1. 在 **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 的 1 MB 承載大小上限，Amazon Cognito 將會併入預先簽署的 Amazon Simple Storage Service (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 小時內只能有一次成功的大量發佈請求。