Boto3 IAM официант не ждет - PullRequest
0 голосов
/ 28 марта 2019

Я использую 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.

1 Ответ

1 голос
/ 29 марта 2019

Ошибка говорит:

Невозможно найти профиль входа для пользователя someuser.

Профиль входа является отдельным от пользователя . Это должно быть специально создано.

Изменить update_login_profile() на create_login_profile().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...