

# 将 Amazon S3 与 Amazon EC2 实例结合使用
<a name="AmazonS3"></a>

Amazon Simple Storage Service（Amazon S3）是一种对象存储服务，提供行业领先的可扩展性、数据可用性、安全性和性能。您可以使用 Amazon S3 为数据湖、网站、备份和大数据分析等一系列用例存储和检索任意数量的数据，这些数据可以来自 Amazon EC2 实例或互联网上的任何地方。有关更多信息，请参阅[什么是 Amazon S3？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)

数据元是 Amazon S3 中存储的基础实体。Amazon S3 中存储的每个对象都包含在存储桶中。存储桶在最高级别上组织管理 Amazon S3 命名空间，并指定负责该存储的账户。Amazon S3 存储桶类似于互联网域名。存储在存储桶中的对象具有唯一的密钥值，可以使用 URL 进行检索。举例来说，如果密钥值为 `/photos/mygarden.jpg` 的对象存储在 `amzn-s3-demo-bucket1` 存储桶中，则可使用 URL `https://amzn-s3-demo-bucket1.s3.amazonaws.com/photos/mygarden.jpg` 对该对象进行寻址。有关更多信息，请参阅 [Amazon S3 的工作原理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html#CoreConcepts)。

## 用法示例
<a name="S3UsageScenarios"></a>

凭借 Amazon S3 的存储优势，您可以选择使用此服务存储文件和数据集以用于 EC2 实例。有几种方法可在 Amazon S3 和您的实例间移动数据。除下面所讨论的示例外，您还可以使用其他人编写的各种工具从您的计算机或实例访问您在 Amazon S3 中的数据。

如果您有权限，就可以使用以下某种方法在 Amazon S3 和您的实例之间复制文件。

------
#### [ wget ]

**注意**  
此方法仅适用于公有对象。如果对象不是公有的，您会收到 `ERROR 403: Forbidden` 消息。如果您收到此错误，您必须使用 Amazon S3 控制台、AWS CLI、AWS API、AWS 开发工具包或 AWS Tools for Windows PowerShell，并且您必须拥有所需的权限。有关更多信息，请参阅《Amazon S3 用户指南》**中的 [Amazon S3 的身份和访问管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html)以及[下载对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html)。

**wget** 实用工具是 HTTP 和 FTP 客户端，可用于从 Amazon S3 下载公用对象。该实用工具在 Amazon Linux 和大多数其他分发版中均为默认安装，可在 Windows 上下载安装。要下载 Amazon S3 对象，请使用以下命令（替换要下载的对象的 URL）。

```
[ec2-user ~]$ wget https://amzn-s3-demo-bucket.s3.amazonaws.com/path-to-file
```

------
#### [ PowerShell ]

您可以使用 [AWS Tools for Windows PowerShell](https://aws.amazon.com/powershell/) 将对象移入和移出 Amazon S3。

您可以使用 [Copy-S3Object](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-S3Object.html) cmdlet 将 Amazon S3 对象复制到 Windows 实例，如下所示。

```
Copy-S3Object `
    -BucketName amzn-s3-demo-bucket `
    -Key path-to-file `
    -LocalFile my_copied_file.ext
```

您也可以在 Windows 实例上使用 Web 浏览器打开 Amazon S3 控制台。

------
#### [ AWS CLI ]

您可以使用 AWS Command Line Interface（AWS CLI）从 Amazon S3 下载受限制的项目和上传项目。有关更多信息（例如如何安装和配置这些工具），请参阅 [AWS Command Line Interface 详细信息页](https://aws.amazon.com/cli/)。

[aws s3 cp](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) 命令与 Unix **cp** 命令类似。您可以将文件从 Amazon S3 复制到您的实例，从您的实例复制到 Amazon S3，可以将文件在不同 Amazon S3 位置之间复制。

使用以下命令可将一个对象从 Amazon S3 复制到您的实例。

```
aws s3 cp s3://amzn-s3-demo-bucket/my_folder/my_file.ext my_copied_file.ext
```

使用以下命令可将一个对象从您的实例重新复制到 Amazon S3。

```
aws s3 cp my_copied_file.ext s3://amzn-s3-demo-bucket/my_folder/my_file.ext
```

[aws s3 sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) 命令可以将整个 Amazon S3 存储桶同步到本地目录位置。这可以用于下载数据集并使本地副本随远程集保持更新。如果您对 Amazon S3 存储桶拥有合适权限，则当您最后在命令中将源与目标位置反转时，可以将本地目录备份推送到云。

使用以下命令可将整个 Amazon S3 存储桶下载到实例上的本地目录。

```
aws s3 sync s3://amzn-s3-demo-source-bucket local_directory
```

------
#### [ Amazon S3 API ]

如果您是一名开发人员，则可以使用 API 访问 Amazon S3 中的数据。您可以使用此 API 帮助开发应用程序，并且可以将其与其他 API 和 SDK 集成。有关更多信息，请参阅《Amazon Simple Storage Service API Reference》**中的 [Code examples for Amazon S3 using AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/service_code_examples.html)。

------