Когда роль 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
фактически не меняет ваши учетные данные.Скорее, вам нужно использовать возвращенные учетные данные для создания нового объекта клиента.Таким образом, не существует понятия «истечения срока действия» каких-либо учетных данных.