簡體   English   中英

從EC2實例訪問Amazon S3 Bucket

[英]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

注意:

  • s3是別名
  • mybucket是您的AWS S3存儲桶
  • localfolder是用於備份的EC2機器文件。

安裝Minio客戶端:

GNU / Linux的

下載mc:

$ ./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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM