Как заставить принудительно истечь принять роль, чтобы сохранить мою текущую учетную запись учетной записи сохранить данные в моей текущей учетной записи S3 корзины - PullRequest
0 голосов
/ 22 июня 2019

У меня есть одна лямбда, из которой я получаю доступ к одному кросс-аккаунту по предполагаемой роли

sts = boto3.client('sts')
sts.assume_role(RoleArn='A', RoleSessionName='aaa')

Теперь я сделал некоторую операцию после доступа к этому

Как будто я получаю некоторую информацию об экземпляре.

  ec2 = boto3.client('ec2')
  desc = ec2.describe_instaces() #this all are  working fine

Теперь я хочу поддержать свою лямбда-роль (B) и сохранить эти данные.

 sts2 = boto3.client('sts')
 sts2.assume_role(RoleArn='B', RoleSessionName='bbb')

и хотите сохранить desc эти данные экземпляра в одном сегменте s3 моей текущей лямбда-учетной записи.

Я пробовал это, но он не может хранить данные ... Есть ли способ заставить истечь предполагаемую роль и получить мою текущую роль доступа для хранения данных

1 Ответ

1 голос
/ 22 июня 2019

Когда роль IAM назначается лямбда-функции AWS, ей автоматически предоставляется набор временных учетных данных.Затем код в функции может использовать эти учетные данные, просто вызывая сервисы AWS, например:

ec2_client = boto3.client('ec2')

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

response = sts.assume_role(RoleArn='A', RoleSessionName='aaa')

response будет содержать:

{
    'Credentials': {
        'AccessKeyId': 'string',
        'SecretAccessKey': 'string',
        'SessionToken': 'string',
        'Expiration': datetime(2015, 1, 1)
    },
    'AssumedRoleUser': {
        'AssumedRoleId': 'string',
        'Arn': 'string'
    },
    'PackedPolicySize': 123
}

Если вы хотите использовать эти предполагаемые учетные данные при последующем вызове AWS, вам нужно будет создать объект Session и затемиспользуйте это Session для создания нового Client:

session = Session(aws_access_key_id=response['Credentials']['AccessKeyId'],
                  aws_secret_access_key=response['Credentials']['SecretAccessKey'],
                  aws_session_token=response['Credentials']['SessionToken'])

assumed_client = session.client('ec2')
instances_response = assumed_client.describe_instances()    

Итог: Вызов assume-role фактически не меняет ваши учетные данные.Скорее, вам нужно использовать возвращенные учетные данные для создания нового объекта клиента.Таким образом, не существует понятия «истечения срока действия» каких-либо учетных данных.

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