【发布时间】:2023-04-05 19:54:01
【问题描述】:
我希望 Boto3 从配置文件中获取访问密钥和密钥,而不是对其进行硬编码。在我的 Linux 服务器上,我将以下环境变量 AWS_SHARED_CREDENTIALS_FILE 设置为值 /app/.aws/credentials。在 /app/.aws/ 我放置了一个名称为 credentials 的文件,其内容如下:
[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'
【问题讨论】:
-
如果可以避免的话,不要在服务器上存储长期存在的凭据。使用 IAM 角色通过临时凭证 (docs.aws.amazon.com/IAM/latest/UserGuide/…) 授予权限。
-
感谢您的建议,但我使用的是非 Amazon 托管的 S3 服务。
标签: python linux amazon-web-services environment-variables boto3