0

我希望Boto3从配置文件中获取访问密钥和密钥,而不是对它们进行硬编码。在我的Linux服务器上,我设置了值为/app/.aws/credentials的以下环境变量AWS_SHARED_CREDENTIALS_FILE。在/app/.aws/我把一个文件,内容如下名称的证书:Boto3不使用配置文件中的密钥

[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' 
+0

不要存储在长期凭据服务器,如果你能避免它。使用IAM角色通过临时凭证授予权限(http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。 – jarmod

+0

感谢您的建议,但我使用的不是由亚马逊托管的S3服务。 – user3080315

回答

2

如果你有凭据与AWS凭证已创建的文件夹,这意味着你不需要实例化客户端时指定它们。下面应该工作:

import boto3 

conn = boto3.client('s3', 
       region_name="eu-west-1", 
       endpoint_url="endpoint", 
       config=Config(signature_version="s3", s3={'addressing_style': 'path'})) 
相关问题