python - Boto3 中 Java 的 DefaultAWSCredentialsProviderChain 等效项
问题描述
我有一项服务需要进行身份验证 1. 通过从 ec2 实例元数据中获取凭据 2. 或使用 sts
在java中,我正在使用DefaultAWSCredentialsProviderChain
which 工作正常。python的boto3中是否有等价物?
目前,如果我通过 ec2 元数据连接,我正在使用:
provider = InstanceMetadataProvider(iam_role_fetcher=InstanceMetadataFetcher(timeout=1000, num_attempts=2))
creds = provider.load()
session = boto3.Session(
aws_access_key_id=creds.access_key,
aws_secret_access_key=creds.secret_key,
aws_session_token=creds.token
)
但如果我使用 sts 我将其更改为:
sts = boto3.client('sts')
response = sts.assume_role(
RoleArn='aws:arn:iam::account_id:role/role-that-allows-s3-access',
RoleSessionName='my-random-session-name',
DurationSeconds=2000 # how many seconds these credentials will work
)
session = boto3.Session(
aws_access_key_id=response['Credentials']['AccessKeyId'],
aws_secret_access_key=response['Credentials']['SecretAccessKey'],
aws_session_token=response['Credentials']['SessionToken']
)
解决方案
您无需InstanceMetadataProvider
在client
. 默认情况下,boto3 的工作方式与配置凭据DefaultAWSCredentialsProviderChain
中的说明相同。
因此,例如,如果您要在实例上使用 s3,您可以:
s3 = boto3.client('s3')
这将自动从元数据中获取凭据。
推荐阅读
- bash - 命令'source'有什么作用?
- java - 使用毕加索无法在图像视图中加载图像?
- wordpress - 更新到 wordpress 5.0 后发布失败
- javascript - 使用 Angular 7 在子组件中无法访问子行
- elasticsearch - 具有日期时间范围匹配的 Elasticsearch 聚合 - 部分匹配用例
- javascript - 一旦不和谐机器人重新连接而不是一个,如何修复发送的多条消息?
- algorithm - Given a tree find the product of two values in the subtree rooted at a particular node such that the product has minimum number of zeros?
- java - 使用 web.xml 在 OSGi Jetty 上实现 REST
- python-3.x - 将 pandas 数据框导出到 Excel 并设置列宽和文本换行
- php - MPGS 集成 CREATE_CHECKOUT_SESSION cURL