【发布时间】:2018-09-05 18:05:02
【问题描述】:
我的应用程序是通过 Elastic Beanstalk 部署的。它需要访问 S3。我可以使用自己的访问密钥在本地执行此操作,但我不想在部署时将其存储在任何地方。鉴于实例在 Beanstalk 上,必须有一种更简单的 auth 方法,也许使用 roles?
我已为 Beanstalk 实例上使用的角色授予完整的 S3 权限,但我不知道如何设置 Session。
如何替换它?:
session = boto3.session.Session(
aws_access_key_id=os.environ.get('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY'))
client = session.client('s3')
s3 = session.resource('s3')
bucket = s3.Bucket(os.environ.get('S3_BUCKET'))
# do stuff
【问题讨论】:
-
如果 IAM 角色附加到您的 EC2 实例,您可以取出前 2 行并将其替换为:
client = boto3.client('s3')。 boto3 将从附加的 IAM 角色中检索凭证。或者如果您需要使用会话对象,请将第一行替换为:session = boto3.session.Session(region_name='')。区域名称将是您的 S3 存储桶的区域。
标签: python amazon-web-services amazon-s3 amazon-elastic-beanstalk boto3