我正在使用 boto3 创建 IAM 用户,请等到 IAM 用户创建完毕,然后更新该用户的登录配置文件。我的python代码创建用户工作正常,用户创建成功。IAM 最终是一致的,所以我知道我需要等待创建用户才能使用它执行任何其他操作,并且我正在使用服务员来实现此目的。但是当我尝试更新登录配置文件时,它出错,说用户尚不存在。
所以基本上服务员没有像它应该的那样等待。
有人知道我在这里做错了什么吗?
import boto3
password = 'not_the_real_password'
client = boto3.client('iam')
# Create the user
response = client.create_user(
UserName='someuser'
)
# Creating the user works fine. But IAM is eventually consistent, so we have
# to wait for the user to be created before we can do anything with it.
waiter = client.get_waiter('user_exists')
waiter.wait(UserName='someuser')
# If the waiter worked correctly, then it should have waited for the user
# to be created before updating the login profile.
response = client.update_login_profile(
UserName='someuser',
Password=password,
PasswordResetRequired=True
)
预期结果:等待者应等待足够长的时间以使 IAM 用户存在,然后更新登录配置文件将按预期工作。
实际结果:
Traceback (most recent call last):
File "add_user.py", line 20, in <module>
PasswordResetRequired=True
File "/home/myuser/.local/lib/python3.6/site-packages/botocore/client.py", line 357, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/home/myuser/.local/lib/python3.6/site-packages/botocore/client.py", line 661, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.NoSuchEntityException: An error occurred (NoSuchEntity) when calling the UpdateLoginProfile operation: Login Profile for User someuser cannot be found.
错误说:
找不到用户某人的登录配置文件。
登录配置文件与用户是分开的。它需要专门创建。
将update_login_profile()
更改为create_login_profile()
。