How to retrieve temporary credentials using rest api or by using AssumeRole in AWS SDK

0

hi , ive been trying to retrieve temporary credentials using role arn but getting an error of EC2 Metadata not found in AWS SDK . Thanks

已提问 2 年前390 查看次数
2 回答
0

Hello

You cant get the credentials for your current role, so you need to call sts:AssumeRole API.

Here is an example with python boto3.

You can now use the s3_client to call S3 using the role you just assumed.

import boto3
sts_client = boto3.client('sts')

role_arn = "MyRoleArn"

role_credentials = sts_client.assume_role(
  RoleArn=role_arn,
  RoleSessionName='MySessionName',
)['Credentials']

print(f"{role_credentials}")

s3_client = boto3.client('s3',
    aws_access_key_id=role_credentials['AccessKeyId'],
    aws_secret_access_key=role_credentials['SecretAccessKey'],
    aws_session_token=role_credentials['SessionToken']
)

NOTE: Be super careful with logging because the role_credentials variable continues your actual credentials.

Hope this helps!

//Carl

profile picture
已回答 2 年前
0

Your question seems to indicate that you are running on an EC2 instance. If you are running code on EC2 instance, the recommended way to get credentials is to use roles for Amazon EC2..

Here is the link to documentation on using temporary credentials, including how to use them with SDKs: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html

AWS
Ashu
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则