【发布时间】:2019-01-16 10:14:21
【问题描述】:
当我这样做时:
session1 = boto3.session.Session(profile_name='my_profile')
iam_client = session1.client('iam')
鉴于user='an_existin_iam_user',以下成功,因为我可以成功打印accessKeyId和accessKeySecret。
responseCreateAccessKey = iam_client.create_access_key(UserName=user)
accessKeyId = responseCreateAccessKey.get('AccessKey').get('AccessKeyId')
accessKeySecret = responseCreateAccessKey.get('AccessKey').get('SecretAccessKey')
因此,我可以使用 iam_client 为其他用户创建访问凭证(假设 my_profile AWS 配置文件拥有管理员 IAM 用户的凭证)
现在,使用上面新创建的凭证,我想创建一个新的 IAM 用户。以下是我尝试实现的目标:
尝试 1
temp_session = boto3.Session(aws_access_key_id=accessKeyId,aws_secret_access_key=accessKeySecret,region_name='ap-southeast-1')
temp_iam_client = temp_session.client('iam')
responseCreateUser = temp_iam_client.create_user(UserName='my-new-user')
尝试 2
temp_iam_client = boto3.client('iam',aws_access_key_id=accessKeyId,aws_secret_access_key=accessKeySecret,region_name='ap-southeast-1')
responseCreateUser = temp_iam_client.create_user(UserName='my-new-user')
尝试 3
temp_session = boto3.session.Session(aws_access_key_id=accessKeyId,aws_secret_access_key=accessKeySecret,region_name='ap-southeast-1')
temp_iam_client = temp_session.client('iam')
responseCreateUser = temp_iam_client.create_user(UserName='my-new-user')
尝试 4(也如以下答案之一所建议的那样)
temp_session = boto3.session.Session(aws_access_key_id=accessKeyId,aws_secret_access_key=accessKeySecret,region_name='ap-southeast-1')
temp_iam_client = temp_session.client('iam')
time.sleep(5)
responseCreateUser = temp_iam_client.create_user(UserName='my-new-user')
以上每一项都失败并出现以下错误
调用 CreateUser 操作时发生错误(InvalidClientTokenId):请求中包含的安全令牌无效。
这里有什么我遗漏的吗?
我要做的就是使用(如上所示)新生成的访问凭据(访问密钥和访问密钥)创建一个新用户。
如果我收到AccessDeniedexception 也没关系。我期待对于没有正确权限的用户。但是InvalidClientTokenId 异常是我不明白为什么我什至得到它的原因。
另外,如果有帮助,我正在尝试在超过 100 个用户的迭代循环中执行此操作(创建访问密钥和秘密,然后使用它来创建新用户)。
(当然,循环处理当前正在处理的用户的访问密钥已经被最大化等情况。)
例如,如果我尝试从 ipython 控制台执行上述用户创建操作,单独为用户说 existing-test-user,那么我会得到正确的 AccessDenied 异常。但是,当循环到达该用户名时(例如在迭代最初的几个用户之后),我会得到 InvalidClientTokenId 异常。
另外一点是通过this get_credentials() 部分,我只是想知道它是否与凭据缓存有关?
【问题讨论】:
标签: amazon-web-services aws-sdk boto3 aws-iam