ClientError: Произошла ошибка (AccessDenied) при вызове операции AssumeRole: MultiFactorAuthentication завершилась неудачно с недопустимым однократным кодом MFA - PullRequest
0 голосов
/ 01 июня 2018
import boto
import boto3
from boto.s3.connection import S3Connection
from boto.sts import STSConnection

# Prompt for MFA time-based one-time password (TOTP)
mfa_TOTP = raw_input("Enter the MFA code: ")
role_arn = "arn:aws:iam::123456789012:role/TestOperator"
client = boto3.client('sts')
response = client.assume_role(RoleArn=role_arn,SerialNumber="arn:aws:iam::760787039612:mfa/C34768",RoleSessionName="test",TokenCode=mfa_TOTP)
print response

Во время выполнения вышеуказанного кода с допустимым TokenCode MFA также появляется следующая ошибка

ClientError: Произошла ошибка (AccessDenied) при вызове операции AssumeRole: MultiFactorAuthentication не удалось выполнить с недопустимым однократным кодом MFA.

Благодарности за помощь

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Я решил проблему с токеном MFA, выполнив следующие изменения в моем коде

import boto3

role_arn = raw_input("Enter the RoleArn of switch user: ")
SerialNumber = raw_input("Enter the MFA SerialNumber: ")
RoleSessionName = raw_input("Enter the RoleSessionName: ")
mfa_TOTP = raw_input("Enter the MFA code: ")

client = boto3.client('sts')
response = client.assume_role(RoleArn=role_arn,SerialNumber=SerialNumber,RoleSessionName=RoleSessionName,TokenCode=mfa_TOTP)
credentials = response['Credentials']

ec2_resource = boto3.resource('ec2', region,aws_access_key_id = credentials['AccessKeyId'],aws_secret_access_key = credentials['SecretAccessKey'],
                                  aws_session_token = credentials['SessionToken'])
ec2_client = boto3.client('ec2', region,aws_access_key_id = credentials['AccessKeyId'],aws_secret_access_key = credentials['SecretAccessKey'],
                                  aws_session_token = credentials['SessionToken'])

, поэтому теперь мы можем получить доступ к ресурсу ec2 с помощью объектов ec2_resource и ec2_client

Спасибо ...

0 голосов
/ 08 июня 2018

Если вы не указали случайные номера счетов для этого поста (что является хорошей идеей), то вы забыли ввести реальный номер счета в свой ARN:

role_arn = "arn: aws: iam:: 123456789012: роль / TestOperator "

должно быть

role_arn =" arn: aws: iam :: 760787039612: роль / TestOperator "

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