Boto3不使用配置文件中的密钥

时间:2017-07-28 10:39:13

标签: python linux amazon-web-services environment-variables boto3

我希望Boto3从配置文件中获取访问权限和密钥,而不是硬编码。在我的Linux服务器上,我使用值AWS_SHARED_CREDENTIALS_FILE设置以下环境变量/app/.aws/credentials。在/app/.aws/我放置了一个名为凭据的文件,其中包含以下内容:

[default]
aws_access_key_id = abcd
aws_secret_access_key = abcd

当然我用的是实际键而不是abcd。

的Python:

import boto3
conn = boto3.client('s3',
                    region_name="eu-west-1",
                    endpoint_url="endpoint",
                    aws_access_key_id=aws_access_key_id,
                    aws_secret_access_key=aws_secret_access_key,
                    config=Config(signature_version="s3", s3={'addressing_style': 'path'}))

然而它说name'aws_access_key_id' is not defined。我该如何解决?感谢

编辑:

>>> os.environ['AWS_SHARED_CREDENTIALS_FILE']
'/app/.aws/credentials'

2 个答案:

答案 0 :(得分:2)

如果您拥有已创建aws凭据的凭据文件夹,则表示您在实例化客户端时不需要指定它们。以下应该有效:

<button onclick="myFunction()">Show div</button>
<p><span>some text</span></p>
<p><span>some text</span></p>
<p><span>some text</span></p>
<p><span>some text</span></p>
<p><span>some text</span></p>
<div id="outside" onclick="hide()"></div>
<div id="myDiv"></div>

答案 1 :(得分:1)

如果您在EC2实例上运行应用程序,您还可以为您的实例分配一个S3角色,并让boto承担该角色。防止您必须在实例中存储密钥。

查看&#34;假设角色提供者&#34;在文档中:

http://boto3.readthedocs.io/en/latest/guide/configuration.html

链接到IAM角色:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html