我在不同区域有一个EC2实例和一个S3存储桶。存储桶包含我的EC2实例定期使用的一些文件。 我想以编程方式下载我的EC2实例上的文件(使用python)
有办法吗?
答案 0 :(得分:8)
在python中有很多方法可以做到这一点
Boto有S3模块可以做到这一点。 http://boto.readthedocs.org/en/latest/ref/s3.html
您也可以使用python请求库通过http
下载AWS Cli还为您提供了从shell下载的选项:
aws s3 cp s3://bucket/folder/file.name file.name
答案 1 :(得分:1)
添加@joeButler上面所说的内容......
您的实例需要使用API访问S3的权限。 因此,您需要创建IAM角色和实例配置文件。您的实例需要在创建实例时分配实例配置文件。请参见第183页(如页面底部所示。主题名称为“使用IAM角色授予应用程序权限” 在本指南的Amazon EC2实例“)上运行:AWS IAM User Guide 以了解步骤和过程。
答案 2 :(得分:1)
我为Minio工作,它是用golang编写的开源源代码,S3 Compatible对象存储器。
您可以使用minio-py客户端库,其开源和&与AWS S3兼容。以下是get_object.py
的简单示例from minio import Minio
from minio.error import ResponseError
client = Minio('s3.amazonaws.com',
access_key='YOUR-ACCESSKEYID',
secret_key='YOUR-SECRETACCESSKEY')
# Get a full object
try:
data = client.get_object('my-bucketname', 'my-objectname')
with open('my-testfile', 'wb') as file_data:
for d in data:
file_data.write(d)
except ResponseError as err:
print(err)
你也可以使用minio client aka mc mc mirror 命令来执行相同操作。您可以将其添加到cron。
$ mc mirror s3/mybucket localfolder
注意:
安装Minio客户端:
的GNU / Linux
下载mc for:
来自https://dl.minio.io/client/mc/release/linux-arm/mc的ARM
$ chmod 755 mc $ ./mc --help
添加S3凭据
$ ./mc config host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
注意:替换访问权限&与你的密钥。
答案 3 :(得分:0)
如上所述,您可以使用Boto执行此操作。为了使其更安全而不用担心用户凭据,您可以使用IAM仅授予EC2计算机对特定存储桶的访问权限。希望有所帮助。
答案 4 :(得分:0)
如果你想使用python,你可能想要使用更新的boto3 API。我个人比原来的boto包更喜欢它。它适用于python2和python3,而differences是最小的。
您可以在创建新存储区时指定区域(请参阅boto3.Client文档),但存储区名称是唯一的,因此您不需要连接它。并且您可能不想在不同的区域使用存储桶而不是实例,因为您将支付区域之间的数据传输。