Я начал работать с аутентификацией AWS и, похоже, пробил с помощью объекта Aws :: AssumeRoleCredentials.
Надеюсь, я просто неправильно понял, стоит ли мне вообще его использовать.
У меня есть успешный метод принятия роли при использовании токена mfa:
# Assume the role referenced in the profile
def assume_role(mfa_token_code = nil)
sts_client = Aws::STS::Client.new(credentials: @user_credentials, region: @user_profile.region)
@role_credentials = sts_client.assume_role(
{
role_arn: @user_profile.role_arn, # required
role_session_name: @session_name, # required
duration_seconds: @duration_seconds,
serial_number: @user_profile.mfa_serial,
token_code: mfa_token_code.to_s
}
)
end
Это работает нормально, но требует токен mfa.
Я думаю, что можно затем снова аутентифицироваться, если время сеанса не истекло, без необходимости запрашивать у пользователя другой токен mfa, но я изо всех сил пытаюсь найти способ сделать это.
Я возился с объектом AssumeRoleCredentials в надежде, что это правильный объект для этого:
def authenticate_as_application_user
begin
@role_credentials = Aws::AssumeRoleCredentials.new(
# client: Aws::STS::Client.new(credentials: @user_credentials, region: @user_profile.region),
duration_seconds: @duration_seconds,
role_arn: @user_profile.role_arn,
role_session_name: 'session-name-xxxxxxxxx'
)
rescue
puts 'Enter MFA code: '
mfa_token_code = gets.chomp
unless mfa_token_code.nil?
assume_role(mfa_token_code)
else
puts('No code supplied, aborting')
end
end
end
Независимо от того, что я пытаюсь, этот код не может принять роль с ошибкой:
Access denied
Я знаю из других инструментов python, что я использую это, если я аутентифицируюсь с токеном mfa, а затем повторно запускаю инструмент, мне больше не будет предложено, пока не истечет время ожидания исходного сеанса.
Что я делаю не так?
Спасибо