如何在没有 AWS Vault 的情况下使用 boto3?

How to use boto3 without AWS Vault?

我在 Python 中使用了以下方法:

def connect_s3_boto3():
    try:
        os.environ['AWS_PROFILE'] = "a9e"
        s3 = boto3.resource('s3')
        return s3
    except:
        raise

问题是使用 ~/.aws/config:

[profile home]
aws_access_key_id=ID
aws_secret_access_key=SECRET
[profile a9e]
region=eu-west-1
role_arn=DAROLE
source_profile=home

所以,我有一堆疑惑。在我想使用该方法的生产环境中,我需要设置 AWS Vault?有没有别的办法?例如在 boto2.

中使用 IAM_ROLE

对于 Amazon EC2 实例上的代码 运行:

  • 创建一个 IAM 角色 并分配适当的权限
  • 将角色与 Amazon EC2 实例相关联
  • 调用 AWS SDK 的实例上的任何代码 运行 将自动获取与角色关联的凭证
  • 不需要在 config/credentials 文件中放入 Access Key、Secret Key 和 Role

参见:IAM Roles for Amazon EC2 - Amazon Elastic Compute Cloud

如果您是 运行 非 EC2 计算机上的代码,那么您将需要 config/credentials 文件中的条目。这将至少涉及与 IAM 用户关联的访问密钥和秘密密钥。如果您随后希望使用 IAM 角色,则代码需要 AssumeRole() 使用这些凭据。