使用Boto3调用AWS IdentityStore API创建用户时遇属性不存在错误
解决IdentityStore客户端无
create_user方法的问题 问题原因
你遇到的错误核心是:Boto3的identitystore客户端本身没有create_user方法。这个客户端仅用于查询、读取或更新Identity Store中已存在的用户/组信息,而创建用户的操作需要使用AWS IAM Identity Center(原AWS SSO)对应的sso-admin客户端。
正确实现代码
要完成从DynamoDB读取用户并创建到Identity Store的需求,需改用boto3.client('sso-admin')调用其create_user方法,示例代码如下:
import boto3 # 初始化sso-admin客户端 sso_admin_client = boto3.client('sso-admin') # 从DynamoDB读取用户数据 dynamodb = boto3.resource('dynamodb') user_table = dynamodb.Table('你的DynamoDB用户表名') db_response = user_table.scan() user_list = db_response['Items'] # 循环创建Identity Store用户 for user in user_list: try: create_result = sso_admin_client.create_user( InstanceArn='arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxx', # 替换为你的IAM Identity Center实例ARN UserName=user['username'], DisplayName=user['display_name'], # 可选:补充邮箱、姓名等字段 Emails=[ { 'Value': user['email'], 'Type': 'work' } ], FamilyName=user['last_name'], GivenName=user['first_name'] ) print(f"用户创建成功,ID:{create_result['UserId']}") except Exception as e: print(f"创建用户{user['username']}失败:{str(e)}")
关键注意事项
- 权限配置:确保执行代码的IAM角色拥有
sso:CreateUser权限,同时需添加dynamodb:Scan(或对应查询权限)以读取DynamoDB数据。 - InstanceArn获取:可在IAM Identity Center控制台的「设置」页面找到对应的实例ARN。
- 必填参数:
InstanceArn和UserName是创建用户的必填项,其余字段可根据业务需求补充。
内容的提问来源于stack exchange,提问作者Rama Selvanathan
相关产品推荐
相关产品推荐

