如何在没有 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()
使用这些凭据。
我在 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()
使用这些凭据。