Cognito UserPoolのListUserAPIで停止済のアカウントだけ抽出する
まとめ AWSのドキュメントだと、 cognito:user_status (コンソールでは [Enabled] となっています) と書かれていますが、ListUsers APIのFilterで使用するのはstatusの […]
広告ここから
広告ここまで
目次
まとめ
AWSのドキュメントだと、
cognito:user_status (コンソールでは [Enabled] となっています)
と書かれていますが、ListUsers APIのFilterで使用するのはstatus
の方です。
コード
profile = 'aws-cli-profile' session = Session(profile_name=profile) cognito = session.client('cognito-idp') response = cognito.list_users( UserPoolId='us-east-1_XXXXXXX', Filter="status='Disabled'" ) for data in response['Users']: print(data['Username']) print(data['Enabled'])
実行結果
$ python test.py development False dev_hideokamoto False
アクティブなユーザーのみ抽出する
「EnabledがEnabledで、なおかつStatusがCONFIRMEDになってるユーザー」は、アクティベーションも済んでいるのでおそらくアクティブなユーザーと思われます。
ということでそういうユーザーだけ引っ張り出してみましょう。
profile = 'aws-cli-profile' session = Session(profile_name=profile) cognito = session.client('cognito-idp') response = cognito.list_users( UserPoolId='us-east-1_XXXXXXX', Filter="cognito:user_status='CONFIRMED'" ) for data in response['Users']: if data['Enabled']: print(data['Username']) print(data['Enabled']) print(data['UserStatus'])
実行結果
$ python test.py development True CONFIRMED dev_hideokamoto True CONFIRMED
Tips:Filterできるのは1属性のみ
ListUserAPIのFilterにはANDやOR検索がありません。
ですので、数を絞り込めそうな方の属性でListUserを実行し、その後もう片方の属性の状態を確認するという方法になります。
今回は「”登録はしたけど、メールでのアクティベーションを実行していない”というユーザーが多い」だろうと判断してstatusの方で検索しました。