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'})) 
相關問題