Cognitoストリームとは
- Amazon Cognitoストリームを試してみた | Developers.IO
- Announcing Amazon Cognito Streams – AWS Developer Blog – Mobile:
Cognito Datasetに蓄積されたデータを取得するためには、Cognitoストリームを設定してKinesis経由でデータを出力する必要がある。Cognitoストリームを設定すると、Cognito Datasetに変更が生じる度にKinesisにそのデータを入力することができる。
Cognitoストリームの設定
Cognitoのダッシュボードから「Edit identity pool」をクリックし、Cognito Streamの項目を編集する

Kinesis stream名とシャード数を設定する
- 「Create stream」をクリック
- シャードとはKinesisの入出力処理のパイプの太さを表す

ロール設定を行う
- 「Create role」をクリック
- ロール名が自動入力されるので、作成ウィザードで登録を行う

有効化する
- 「StreamStatus」を「Enabled」に設定することで、Cognito Streamが有効化される
設定変更を実行する
- また、上記の設定を行った上で「Save Changes」をクリックしてもストリーム名、シャード、ロールなどがきちんと反映されていない場合があるので、反映されているか確認することが重要である
- ユーザのロール設定と同様に、先ほど作成したロールのポリシーを確認する
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kinesis:PutRecord"
],
"Resource": [
"arn:aws:kinesis:ap-northeast-1:172664222583:stream/STREAM_NAME"
]
}
]
}
なお、Bulk publishをクリックすることでこれまで蓄積されたCognito DatasetをKinesisに一括で送り出すことが可能だが、24時間に1回しか実行できないことに注意が必要である。
ストリームレコード
CognitoからKinesisへは、以下のフォーマットでレコードが送信される。
{
"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
}
AWS CLI経由でコマンドを入力することで、Cognitoから正常にレコード入力されているかの確認を行うことが可能である。


















