[英]Access to Amazon S3 Bucket from EC2 instance
我在不同的區域有一個EC2實例和一個S3存儲桶。 存儲桶包含我的EC2實例定期使用的一些文件。 我想以編程方式下載我的EC2實例上的文件(使用python)
有沒有辦法做到這一點?
在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
添加@joeButler上面所說的...
您的實例需要使用API訪問S3的權限。 因此,您需要創建IAM角色和實例配置文件。 您的實例需要在創建實例時分配實例配置文件。 請參閱本指南的第183頁(如頁面底部所示。主題名稱為“使用IAM角色為在Amazon EC2實例上運行的應用程序授予權限”): AWS IAM用戶指南,以了解步驟和過程。
我為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 it come mc mirror命令來執行相同的操作。 您可以將其添加到cron。
$ mc mirror s3/mybucket localfolder
注意:
安裝Minio客戶端:
GNU / Linux的
下載mc:
ARM來自https://dl.minio.io/client/mc/release/linux-arm/mc
\n $ chmod 755 mc\n $ ./mc --help\n
添加S3憑據
$ ./mc config host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
注意:用您的訪問權限和密鑰替換。
如上所述,您可以使用Boto執行此操作。 為了使其更安全而不用擔心用戶憑據,您可以使用IAM僅授予EC2計算機對特定存儲桶的訪問權限。 希望有所幫助。
如果你想使用python,你可能想要使用更新的boto3 API。 我個人比原來的boto包更喜歡它。 它適用於python2和python3, 差異很小。
您可以在創建新存儲桶時指定區域(請參閱boto3.Client文檔),但存儲桶名稱是唯一的,因此您不需要連接它。 並且您可能不希望在不同的區域使用存儲桶而不是實例,因為您將為區域之間的數據傳輸付費 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.