如何通过AWS CLI v2在Identity Center创建含密码及邀请的用户?
通过AWS CLI v2创建带密码设置和邀请功能的AWS Identity Center用户
问题背景
我使用AWS CLI v2的identitystore create-user命令创建AWS Identity Center用户,执行命令如下:
aws identitystore create-user \ --identity-store-id ${IDENTITY_STORE_INSTANCE_ID} \ --user-name ${USERNAME} \ --name '{ "FamilyName": "'${LAST_NAME}'", "GivenName": "'${FIRST_NAME}'" }' \ --display-name "${DISPLAY_NAME}" \ --emails '[{ "Value": "'${EMAIL}'", "Primary": true }]'
用户创建成功,但无法设置密码,也未收到邀请邮件。查看控制台的API调用过程后,发现CLI及官方API文档未提及两个关键属性:Active和PasswordMode,控制台发送的请求内容示例如下:
{ "IdentityStoreId": "xxx", "UserName": "xxx", "UserAttributes": { "emails": { "ComplexListValue": [ { "value": { "StringValue": "xxx@xxx.de" }, "type": { "StringValue": "work" }, "primary": { "BooleanValue": true } } ] }, "name": { "ComplexValue": { "givenName": { "StringValue": "xxx" }, "familyName": { "StringValue": "xxx" } } }, "displayName": { "StringValue": "xxx" } }, "Active": true, "PasswordMode": "EMAIL" }
解决方案
核心思路
identitystore create-user的CLI命令未暴露Active和PasswordMode参数,但可以通过--cli-input-json参数直接传递完整的API请求体,从而包含这两个隐藏属性,触发密码设置邀请邮件。
具体实现方式
方式1:使用JSON文件作为输入
- 创建名为
create-user-request.json的文件,内容如下(替换占位符为实际值):
{ "IdentityStoreId": "${IDENTITY_STORE_INSTANCE_ID}", "UserName": "${USERNAME}", "UserAttributes": { "emails": { "ComplexListValue": [ { "value": { "StringValue": "${EMAIL}" }, "type": { "StringValue": "work" }, "primary": { "BooleanValue": true } } ] }, "name": { "ComplexValue": { "givenName": { "StringValue": "${FIRST_NAME}" }, "familyName": { "StringValue": "${LAST_NAME}" } } }, "displayName": { "StringValue": "${DISPLAY_NAME}" } }, "Active": true, "PasswordMode": "EMAIL" }
- 用环境变量替换占位符并执行命令:
envsubst < create-user-request.json > temp-request.json && aws identitystore create-user --cli-input-json file://temp-request.json && rm temp-request.json
方式2:直接传递内联JSON
在命令行中直接构造完整JSON请求(注意转义格式):
aws identitystore create-user --cli-input-json '{ "IdentityStoreId": "'${IDENTITY_STORE_INSTANCE_ID}'", "UserName": "'${USERNAME}'", "UserAttributes": { "emails": { "ComplexListValue": [ { "value": { "StringValue": "'${EMAIL}'" }, "type": { "StringValue": "work" }, "primary": { "BooleanValue": true } } ] }, "name": { "ComplexValue": { "givenName": { "StringValue": "'${FIRST_NAME}'" }, "familyName": { "StringValue": "'${LAST_NAME}'" } } }, "displayName": { "StringValue": "'${DISPLAY_NAME}'" } }, "Active": true, "PasswordMode": "EMAIL" }'
关键参数说明
PasswordMode: 设置为EMAIL时,AWS会自动向用户邮箱发送密码设置邀请邮件;Active: 设置为true确保用户处于激活状态,否则无法接收邀请;--cli-input-json: 绕过CLI参数限制,直接发送与控制台一致的API请求体。
内容的提问来源于stack exchange,提问作者qvt
相关产品推荐
相关产品推荐

