将 Amazon S3 与 Amazon EC2 结合使用
Amazon S3 是一个面向互联网数据的存储库。Amazon S3 为您提供了可靠、快捷的廉价数据存储基础设施。它的设计理念是通过支持您随时从 Amazon EC2 内部或从网络上的任何地方存储和检索任何数量的数据,从而简化整个网络计算。Amazon S3 以冗余方式跨多个设施在多个设备上存储数据对象,允许很多不同的客户端或应用程序线程同时对这些数据对象进行读或写操作。您可以使用存储在 Amazon S3 中的冗余数据快速、可靠地恢复实例或应用程序故障。
Amazon EC2 使用 Amazon S3 来存储 Amazon Machine Image (AMI)。您可以使用 AMI 启动 EC2 实例。万一实例发生故障,您可以使用已存储的 AMI 立即启动其他实例,从而实现快速故障恢复和确保业务的连续性。
Amazon EC2 还使用 Amazon S3 来存储数据卷的快照(备份副本)。在应用程序或系统发生故障的情况下,您可以使用快照来快速、可靠地恢复数据。您也可以将快照用作基准来创建多个数据卷,扩展现有数据卷的大小,或者跨多个可用区移动数据,因此使您的数据使用具有高度的可扩展性。有关使用数据卷和快照的更多信息,请参阅 Amazon Elastic Block Store。
数据元是 Amazon S3 中存储的基础实体。Amazon S3 中存储的每个对象都包含在存储桶中。存储桶在最高级别上组织管理 Amazon S3 命名空间,并指定负责该存储的账户。Amazon S3 存储桶类似于互联网域名。存储在存储桶中的对象具有唯一的密钥值,可以使用 URL 进行检索。举例来说,如果密钥值为 /photos/mygarden.jpg
的对象存储在
存储桶中,则可使用 URL DOC-EXAMPLE-BUCKET1
https://
对该对象进行寻址。DOC-EXAMPLE-BUCKET1
.s3.amazonaws.com/photos/mygarden.jpg
有关 Amazon S3 功能的更多信息,请参阅 Amazon S3 产品页
用法示例
注意
我们要求使用 TLS 1.2,建议使用 TLS 1.3。客户端必须满足此要求才能从 Amazon Simple Storage Service(Amazon S3)下载。有关更多信息,请参阅 TLS 1.2 成为所有 AWS API 端点的最低 TLS 协议级别
凭借 Amazon S3 的存储优势,您可以选择使用此服务存储文件和数据集以用于 EC2 实例。有几种方法可在 Amazon S3 和您的实例间移动数据。除下面所讨论的示例外,您还可以使用其他人编写的各种工具从您的计算机或实例访问您在 Amazon S3 中的数据。AWS 论坛中对其中一些常见工具进行了讨论。
如果您有权限,就可以使用以下某种方法在 Amazon S3 和您的实例之间复制文件。
GET 或 wget
注意
此方法仅适用于公有对象。如果对象不是公有的,您会收到 ERROR 403: Forbidden
消息。如果您收到此错误,您必须使用 Amazon S3 控制台、AWS CLI、AWS API、AWS 开发工具包或 AWS Tools for Windows PowerShell,并且您必须拥有所需的权限。有关更多信息,请参阅 Amazon S3 用户指南中的 Amazon S3 中的 Identity and Access Management 和下载对象。
wget 实用工具是 HTTP 和 FTP 客户端,可用于从 Amazon S3 下载公用对象。该实用工具在 Amazon Linux 和大多数其他分发版中均为默认安装,可在 Windows 上下载安装。要下载 Amazon S3 对象,请使用以下命令(替换要下载的对象的 URL)。
[ec2-user ~]$
wget https://
my_bucket
.s3.amazonaws.com/path-to-file
AWS Command Line Interface
AWS Command Line Interface (AWS CLI) 是用于管理 AWS 服务的统一工具。AWS CLI 能让用户对自己进行身份验证,从 Amazon S3 下载受限制的项目和上载项目。有关更多信息(例如如何安装和配置这些工具),请参阅 AWS Command Line Interface 详细信息页
aws s3 cp 命令与 Unix cp 命令类似。您可以将文件从 Amazon S3 复制到您的实例,从您的实例复制到 Amazon S3,可以将文件在不同 Amazon S3 位置之间复制。
使用以下命令可将一个对象从 Amazon S3 复制到您的实例。
[ec2-user ~]$
aws s3 cp s3://
my_bucket
/my_folder
/my_file.ext
my_copied_file.ext
使用以下命令可将一个对象从您的实例重新复制到 Amazon S3。
[ec2-user ~]$
aws s3 cp
my_copied_file.ext
s3://my_bucket
/my_folder
/my_file.ext
aws s3 sync 命令可以将整个 Amazon S3 存储桶同步到本地目录位置。这可以用于下载数据集并使本地副本随远程集保持更新。如果您对 Amazon S3 存储桶拥有合适权限,则当您最后在命令中将源与目标位置反转时,可以将本地目录备份推送到云。
使用以下命令可将整个 Amazon S3 存储桶下载到实例上的本地目录。
[ec2-user ~]$
aws s3 sync s3://
remote_S3_bucket
local_directory
Amazon S3 API
如果您是一名开发人员,则可以使用 API 访问 Amazon S3 中的数据。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南。您可以使用此 API 及其示例帮助开发应用程序,可将其与其他 API 和 SDK (如 boto Python 接口) 集成。