Closed4
【cognito】cliでAdmin Create Userしてみる【AWS】

以下図の右サイド。

まずローカルに auth.json
というファイルを新規作成する。構成は以下。
{
"ClientId": "{YOUR_CLIENT_ID}",
"AuthFlow": "USER_PASSWORD_AUTH",
"AuthParameters": {
"USERNAME": "{your_username}",
"PASSWORD": "{your_password}",
"SECRET_HASH": "{calculated_secret_hash}"
}
}
auth.json
の諸注意は以下。
- "USER_PASSWORD_AUTH" は固定値。変更する必要なし
- ClientId は Cognito のコンソールか ssm parameterで確認する。(環境別に用意されている)
- 以下のコマンドで
SECRET_HASH
を計算し、{calculated_secret_hash}
にセットする。
# AWS_USER_NAME はメールアドレスでなく、cognitoが発行する乱数の値。
# cognitoユーザープール > ユーザーから確認可能
AWS_USER_NAME="xxxxx-yyyyy-zzz..."
# ID, SECRETはいずれもcognitoユーザープール > アプリケーションクライアントから確認可能
CLIENT_ID="xxx..."
CLIENT_SECRET="yyy..."
# 文字列を連結してハッシュを計算
# echo で出力された文字列をコピーし、SECRET_HASH としてjsonで指定する。
echo -n "${AWS_USER_NAME}${CLIENT_ID}" | \
openssl dgst -binary -sha256 -hmac "${CLIENT_SECRET}" | \
base64

初期パスワードの変更が必要な場合がある。以下を実行するとSessionが発行されるので、それを使ってパスワード変更する
curl -s -X POST \
-H 'X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth' \
-H 'Content-Type: application/x-amz-json-1.1' \
--data @auth.json \
https://cognito-idp.us-east-1.amazonaws.com/
---
{"ChallengeName":"NEW_PASSWORD_REQUIRED","ChallengeParameters":{"USER_ID_FOR_SRP":"xxx...","requiredAttributes":"[]","userAttributes":"{\"email\":\"...\"}"},"Session":"YYY..."}
aws cognito-idp admin-respond-to-auth-challenge \
--user-pool-id {user_pool_id} \
--client-id {client_id} \
--session "YYY..." \ # 上記reqで返ってきた`Session`の値を指定
--challenge-name NEW_PASSWORD_REQUIRED \
--challenge-responses "USERNAME={user_name},NEW_PASSWORD={new_password},SECRET_HASH={secret_hash}"
---
{
"ChallengeParameters": {},
"AuthenticationResult": {
"AccessToken":
...
}

参考
あとGeminiに聞いたりなど
このスクラップは2024/12/29にクローズされました