仅从 EC2 实例配置文件中获取 boto3 凭证

Viv*_*mas 7 amazon-ec2 boto3

boto3 文档列出了搜索凭证和仅在最后从 EC2 实例元数据服务获取凭证的顺序。

如何强制boto3仅从 EC2 实例配置文件或实例元数据服务获取凭证?

我遇到了这个,它可以让我从元数据服务中获取临时凭据,然后我可以将其传递给创建boto3会话。

但是我的问题是是否有更好的方法来做到这一点?是否可以boto3通过指定provider使用 ie InstanceMetadataProvider- link来创建会话?我尝试了很多搜索文档,但无法弄清楚。

原因 - 此脚本运行的上下文也具有设置了 AWS 密钥的环境变量,这显然优先,但是我需要脚本仅在分配给 EC2 实例的 IAM 角色的情况下运行。

Viv*_*mas 6

所以我最终这样做了,按预期工作。始终使用来自实例角色的临时凭证。该脚本是短暂的,因此信用证的有效性不是问题。

from botocore.credentials import InstanceMetadataProvider, InstanceMetadataFetcher

provider = InstanceMetadataProvider(iam_role_fetcher=InstanceMetadataFetcher(timeout=1000, num_attempts=2))
creds = provider.load().get_frozen_credentials()
client = boto3.client('ssm', region_name='us-east-1', aws_access_key_id=creds.access_key, aws_secret_access_key=creds.secret_key, aws_session_token=creds.token)
Run Code Online (Sandbox Code Playgroud)

如果有更好的方法,请随时发布。