【问题标题】:Access to Amazon S3 Bucket from EC2 instance从 EC2 实例访问 Amazon S3 存储桶
【发布时间】:2016-01-22 18:46:35
【问题描述】:

我在不同区域有一个 EC2 实例和一个 S3 存储桶。存储桶包含一些我的 EC2 实例经常使用的文件。 我想以编程方式下载我的 EC2 实例上的文件(使用 python)

有没有办法做到这一点?

【问题讨论】:

    标签: python amazon-web-services amazon-s3 amazon-ec2 amazon-iam


    【解决方案1】:

    如果您想使用 python,您可能需要使用较新的 boto3 API。我个人比原来的 boto 包更喜欢它。它适用于 python2 和 python3,differences 是最小的。

    您可以在创建新存储桶时指定区域(请参阅boto3.Client 文档),但存储桶名称是唯一的,因此您不需要连接到它。而且您可能不想在与您的实例不同的区域中使用存储桶,因为您需要为区域之间的数据传输付费。

    【讨论】:

      【解决方案2】:

      我为 Minio 工作,它是用 golang 编写的开源 S3 兼容对象存储。

      您可以使用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
      

      注意:

      • s3 是别名
      • mybucket 是您的 AWS S3 存储桶
      • localfolder 是用于备份的 EC2 机器文件。

      安装 Minio 客户端:

      GNU/Linux

      下载mc:

      $ ./mc 配置主机添加 mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

      注意:将访问和密钥替换为您的。

      【讨论】:

        【解决方案3】:

        如上所述,您可以使用 Boto 做到这一点。为了使其更安全且无需担心用户凭证,您可以使用 IAM 仅授予 EC2 机器对特定存储桶的访问权限。希望对您有所帮助。

        【讨论】:

          【解决方案4】:

          补充@joeButler 上面所说的...

          您的实例需要使用 API 访问 S3 的权限。 因此,您需要创建 IAM 角色和实例配置文件。您的实例需要在创建时分配实例配置文件。请参阅第 183 页(如页面底部所示。主题名称为“使用 IAM 角色向应用程序授予权限 在本指南的 Amazon EC2 实例上运行”):AWS IAM User Guide 以了解步骤和过程。

          【讨论】:

            【解决方案5】:

            在 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
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-07-28
              • 2020-11-02
              • 2019-09-29
              • 1970-01-01
              • 2016-05-18
              • 2020-10-15
              • 2019-05-02
              • 2016-03-07
              相关资源
              最近更新 更多