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から正常にレコード入力されているかの確認を行うことが可能である。