Python boto3从ec2上传文件到S3

时间:2018-01-01 10:21:17

标签: python amazon-s3 boto3

如果我想从我的" mac"上传文件到S3,我可以用

import boto3
s3 = boto3.resource('s3', region_name="us-west-1")
s3.meta.client.upload_file('/User/gantao/amz.jpg', 'gantao_created', 'amz.jpg')

但是,

有没有办法从EC2实例上传文件到S3(不要使用SSH到EC2)?

1 个答案:

答案 0 :(得分:1)

简短的回答是"是的。"

更长的答案是,为了将文件从EC2实例上传到S3,部署的EC2实例必须具有put_object到S3的正确权限。

您可以通过在Python代码中配置boto客户端,或者通过创建和分配具有该权限的IAM角色来为EC2实例执行此操作。

更安全的方式是分配IAM角色,因为它不要求您在代码或源代码管理的文件中拥有凭据。

  1. 使用AWS控制台创建一个IAM角色,该角色具有“放置”的权限。对象是相关的S3存储桶。
  2. 将IAM角色分配给您的EC2实例。
  3. 创建IAM角色:

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

    要向您的EC2实例添加IAM角色:

    https://aws.amazon.com/blogs/security/easily-replace-or-attach-an-iam-role-to-an-existing-ec2-instance-by-using-the-ec2-console/