🤖
CognitoからユーザのリストをサクッとCSVで取得してみた
はじめに
CognitoのユーザリストをCSV化するのを自動化したかったので、CLIとかを組み合わせてできないか検討していました。
形式はUsernameとEmailのペアで取得しようとしていました。
ドキュメントを見ると list-users
と jqを利用して簡単にできそうだったので、実際にやってみました。
前提
AWS CLIはv2系を利用しました
$ aws --version
aws-cli/2.1.1 Python/3.7.4 Darwin/19.6.0 exe/x86_64
やってみたこと
- 事前準備
- list-usersでリストを取得
- jqと組み合わせてCSV形式で取得
事前準備
ユーザプールを作成して、ユーザを登録した上で以下の値を控えておきます
- ユーザプールID
list-usersでリストを取得
まずはcognito-idpのlist-usersだけで情報を取得してみました。
今回は、「email」の情報が欲しかったので attributes-to-get
に email
をセットしています。
メールアドレスを取得する場合には以下のコマンドでできました。
$ aws cognito-idp list-users \
--user-pool-id <ユーザプールID> \
--attributes-to-get "email"
{
"Users": [
{
"Username": "1e509176-0c15-440f-87d0-ca83fa1df877",
"Attributes": [
{
"Name": "email",
"Value": "kato@katoaki.com"
}
],
"UserCreateDate": "2020-06-16T06:00:00.255000+09:00",
"UserLastModifiedDate": "2020-06-16T06:00:00.255000+09:00",
"Enabled": true,
"UserStatus": "FORCE_CHANGE_PASSWORD"
},
︙
jqと組み合わせてCSV形式で取得
jqと組み合わせることで、必要な情報だけに絞り、かつCSV形式で取得することができました。
$ aws cognito-idp list-users \
--user-pool-id <ユーザプールID> \
--attributes-to-get "email" \
| jq -r '.Users[] | [.Username, .Attributes[].Value] | @csv' \
| tr -d '"' \
> result.csv
$ cat result.csv
1e509176-0c15-440f-87d0-ca83fa1df877,kato@katoaki.com
445b38d1-dca9-40d1-9c9d-1cd628d4b03c,***@gmail.com
e772bc62-b2ca-4a09-9b34-cd5de8901a13,***@gmail.com
f5baef95-5bf8-46df-83de-855447ea7eff,***@somecompany.jp
まとめ
- Cognito CLIとjqを組み合わせると、CSV形式でデータが取得できる
- cognito-idpでattributes-to-getに指定した属性が取得できる
参考
- list-users — AWS CLI 2.2.9 Command Reference https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cognito-idp/list-users.html
- jq Manual (development version) https://stedolan.github.io/jq/manual/
Discussion