

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用谷歌云存储配置 AWS DataSync 传输
<a name="tutorial_transfer-google-cloud-storage"></a>

借 AWS DataSync助，您可以在 Google 云存储空间和以下 AWS 存储服务之间传输数据：
+ Amazon S3
+ Amazon EFS
+  FSx 适用于 Windows 文件服务器的亚马逊
+ 亚马逊 f FSx or Lustre
+  FSx 适用于 OpenZFS 的亚马逊
+  FSx 适用于 NetApp ONTAP 的亚马逊

要开始传输设置，请为 Google Cloud Storage 创建一个位置。此位置可以用作传输源或传输目标位置。仅当您在谷歌云存储与 Amazon EFS 或 Amazon 之间传输数据时 FSx，或者使用**基本模式**任务时，才需要 DataSync 代理。Google Cloud Storage 和 Amazon S3 之间的**增强模式**数据传输不需要代理。

**注意**  
要在 Google Cloud Storage 与之间建立私有云连接 AWS，请使用带代理的基本模式。

## 概述
<a name="transfer-google-cloud-storage-overview"></a>

DataSync 使用[谷歌云存储 XML API](https://cloud.google.com/storage/docs/xml-api/overview) 进行数据传输。此 API 提供了兼容 Amazon S3 的接口，用于通过 Google Cloud Storage 存储桶读取和写入数据。

使用基本模式进行传输时，可以在 Google Cloud Storage 或 Amazon VPC 中部署代理。

------
#### [ Agent in Google Cloud ]

1. 您在自己的 Google 云环境中部署 DataSync 代理。

1. 代理使用 HMAC 散列消息认证码（HMAC）密钥读取 Google Cloud Storage 存储桶。

1. Google Cloud Storage 存储分区中的对象使用公共终端节点通过 TLS 1.3 安全地传输到中。 AWS 云 

1. 该 DataSync 服务将数据写入您的 S3 存储桶。

下图说明了该传输。

![\[DataSync 传输示例显示了对象数据如何从 Google Cloud Storage 存储分区传输到 S3 存储桶。首先， DataSync 代理部署在您的 Google Cloud 环境中。然后， DataSync 代理读取 Google 云存储桶。数据通过公共终端节点安全地移动到 AWS，在那里将对象 DataSync 写入与您正在使用的 AWS 区域 位置相同的 S3 存储桶 DataSync。\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/images/diagram-transfer-google-cloud-storage-public.png)


------
#### [ Agent in your VPC ]

1. 您在 AWS 环境中的虚拟私有云 (VPC) 中部署 DataSync 代理。

1. 代理使用 HMAC 散列消息认证码（HMAC）密钥读取 Google Cloud Storage 存储桶。

1. 您的 Google 云存储分区中的对象使用私有 VPC 终端节点通过 TLS 1.3 安全地传输到中。 AWS 云 

1. 该 DataSync 服务将数据写入您的 S3 存储桶。

下图说明了该传输。

![\[DataSync 传输示例显示了对象数据如何从 Google Cloud Storage 存储分区传输到 S3 存储桶。首先， DataSync 代理部署在中的 VPC 中 AWS。然后， DataSync 代理读取 Google 云存储桶。数据通过 VPC 终端节点安全地移动到 AWS，在那里将对象 DataSync 写入与 VPC AWS 区域 相同的 S3 存储桶。\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/images/diagram-transfer-google-cloud-storage.png)


------

## 成本
<a name="transfer-google-cloud-storage-cost"></a>

与此迁移相关的可能费用包括：
+ 运行 Google [Compute En](https://cloud.google.com/compute/all-pricing) gine 虚拟机 (VM) 实例（如果您在 Google Cloud 中部署 DataSync 代理）
+ 运行 A [mazon EC2](https://aws.amazon.com/ec2/pricing/) 实例（如果您在其中的 VPC 中部署 DataSync 代理 AWS）
+ 使用传输数据 [DataSync](https://aws.amazon.com/datasync/pricing/)，包括与 [Google 云存储](https://cloud.google.com/storage/pricing)和 [Amazon S3](create-s3-location.md#create-s3-location-s3-requests) 相关的请求费用（如果 S3 是您的传输地点之一）
+ 将数据从 [Google Cloud Storage](https://cloud.google.com/storage/pricing) 中传出
+ 在 [Amazon S3](https://aws.amazon.com/s3/pricing/) 中存储数据

## 先决条件
<a name="transfer-google-cloud-storage-prerequisites"></a>

开始之前，请完成以下先决条件（如果尚未完成）：
+ 使用要传入 AWS的对象，[创建 Google Cloud Storage 存储桶](https://cloud.google.com/storage/docs/creating-buckets)。
+ [注册 AWS 账户](https://portal.aws.amazon.com/billing/signup)。
+ [创建 Amazon S3 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)，用于在对象存入 AWS后存储这些对象。

## 为 Google Cloud Storage 存储桶创建 HMAC 密钥
<a name="transfer-google-cloud-storage-create-hmac-key"></a>

DataSync 使用与您的 Google 服务帐号关联的 HMAC 密钥对您要从中传输数据的存储桶进行身份验证和读取。（有关如何创建 HMAC 密钥的详细说明，请参阅 [Google Cloud Storage 文档](https://cloud.google.com/storage/docs/authentication/hmackeys)。）

**创建 HMAC 密钥**

1. 为您的 Google 服务帐号创建 HMAC 密钥。

1. 请确保您的 Google 服务帐号至少具有 `Storage Object Viewer` 权限。

1. 将 HMAC 密钥访问 ID 和私有密钥存储在安全位置。

   稍后您将需要这些物品来配置您的 DataSync 来源位置。

## 第 2 步：配置网络
<a name="transfer-google-cloud-storage-configure-network"></a>

仅当使用 DataSync 代理进行传输时，才需要进行网络配置。此迁移的网络要求取决于您选择部署代理的位置。

### 对于谷歌云端的 DataSync 代理
<a name="transfer-google-cloud-storage-configure-public"></a>

如果您想在 Google Cloud 中托管 DataSync 代理，请将您的网络配置为[允许通过公共端点进行 DataSync 传输](datasync-network.md#using-public-endpoints)。

### 对于您的 VPC 中的 DataSync 代理
<a name="transfer-google-cloud-storage-configure-vpc"></a>

如果要在中托管代理 AWS，则需要一个带有接口终端节点的 VPC。 DataSync 使用 VPC 终端节点来促进传输。

**为 VPC 端点配置您的网络**

1. 如果您没有 VPC，请在与您的 S3 存储桶 AWS 区域 相同的 [VPC 中创建](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC)。

1. [为 VPC 创建私有子网](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html)。

1. [为创建 VPC 服务终端节点](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) DataSync。

1. 将您的网络配置为[允许通过 VPC 服务终端节点进行 DataSync 传输](datasync-network.md#using-vpc-endpoint)。

   为此，请修改与 VPC 服务端点关联的[安全组](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)。

## 步骤 3：创建 DataSync 代理（可选）
<a name="transfer-google-cloud-storage-create-agent"></a>

只有在使用**基本**模式任务时才需要 DataSync 代理。如果使用**增强**模式在 Google Cloud Storage（GCS）和 Amazon S3 之间进行传输，则无需代理。如果您想使用**基本**模式，则需要一个可以访问您的 GCS 存储桶的 DataSync 代理。

### 对于 Google Cloud
<a name="transfer-google-cloud-storage-choose-endpoint"></a>

在这种情况下， DataSync 代理将在您的 Google Cloud 环境中运行。

**开始之前**：[安装 Google Cloud CLI](https://cloud.google.com/sdk/docs/install)。

**为 Google Cloud 创建代理**

1. 打开 AWS DataSync 控制台，网址为[https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/)。

1. 在左侧的导航窗格中，选择 **代理**，然后选择 **创建代理**。

1. 对于 **Hypervisor **VMware ESXi****，选择，然后选择 “**下载映像**” 以下载包含代理的`.zip`文件。

1. 打开终端。运行以下命令来对映像解压缩：

   ```
   unzip AWS-DataSync-Agent-VMWare.zip
   ```

1. 运行以下命令提取以 `aws-datasync` 开头的代理 `.ova` 文件中的内容：

   ```
   tar -xvf aws-datasync-2.0.1655755445.1-x86_64.xfs.gpt.ova
   ```

1. 运行以下 Google Cloud CLI 命令，将代理的 `.vmdk` 文件导入到 Google Cloud 中：

   ```
   gcloud compute images import aws-datasync-2-test \
      --source-file INCOMPLETE-aws-datasync-2.0.1655755445.1-x86_64.xfs.gpt-disk1.vmdk \
      --os centos-7
   ```
**注意**  
导入 `.vmdk` 文件最多可能需要两个小时。

1. 为您刚刚导入的代理映像创建并启动 VM 实例。

   该实例需要为代理进行以下配置。（有关如何创建实例的详细说明，请参阅 [Google 云计算引擎文档](https://cloud.google.com/compute/docs/instances)。）
   + 对于计算机类型，请选择下列选项之一：
     + **e2-standard-8** — 适用于处理多达 2000 万个对象的 DataSync任务执行。
     + **e2-standard-16** — 适用于处理超过 2000 万个对象的 DataSync任务执行。
   + 对于启动磁盘设置，请转到自定义映像部分。然后选择您刚刚导入的 DataSync 代理映像。
   + 对于服务帐号设置，请选择 Google 服务帐号（与您在[第 1 步](#transfer-google-cloud-storage-create-hmac-key) 中使用的帐号相同）。
   + 对于防火墙设置，请选择允许 HTTP（端口 80）通信的选项。

     要激活您的 DataSync 代理，必须在代理上打开端口 80。不要求该端口可供公开访问。激活后， DataSync 关闭端口。

1. VM 实例运行后，记录其公有 IP 地址。

   您需要此 IP 地址来激活代理。

1. 返回 DataSync 控制台。在下载代理映像的 **创建代理**屏幕上，执行以下操作以激活代理：
   + 对于**端点类型**，选择公共服务端点选项（例如，**美国东部俄亥俄州的公共服务端点**）。
   + 对于**激活密钥**，选择**自动从代理处获取激活密钥**。
   + 对于**代理地址**，输入您刚创建的代理 VM 实例的公有 IP 地址。
   + 选择 **获取密钥**。

1. 为您的代理指定名称，然后选择 **创建代理**。

代理处于在线状态，可以随时传输数据。

### 对于 VPC
<a name="transfer-google-cloud-storage-deploy-agent"></a>

在这种情况下，代理在与您的关联的 VPC 中作为 Amazon EC2 实例运行 AWS 账户。

**开始之前**：[设置 AWS Command Line Interface （AWS CLI）](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

**为 VPC 创建代理**

1. 打开终端。请务必将您的 AWS CLI 个人资料配置为使用与您的 S3 存储桶关联的账户。

1. 复制以下 命令。将 `vpc-region` 替换为您的 VPC 所在的 AWS 区域 （例如，`us-east-1`）。

   ```
   aws ssm get-parameter --name /aws/service/datasync/ami --region vpc-region
   ```

1. 运行命令。在输出中，记录 `"Value"` 属性。

   此值是您指定区域的 DataSync 亚马逊系统映像 (AMI) ID。例如，AMI ID 可能类似于 `ami-1234567890abcdef0`。

1. 复制以下 URL。再次将 `vpc-region` 替换为您的 VPC 所在的 AWS 区域 。接着，将 `ami-id` 替换为您在上一步中记录的 AMI ID。

   ```
   https://console.aws.amazon.com/ec2/v2/home?region=vpc-region#LaunchInstanceWizard:ami=ami-id
   ```

1. 将该 URL 粘贴到浏览器中。

   屏幕上 AWS 管理控制台 显示了 Amazon EC2 实例启动页面。

1. 对于**实例类型**，请为[ DataSync代理选择一个推荐的 Amazon EC2 实例](agent-requirements.md#ec2-instance-types)。

1. 对于**密钥对**，选择现有密钥对或新建一个密钥对。

1. 对于**网络设置**，选择要部署代理的 VPC 和子网。

1. 选择 **启动实例**。

1. 在 Amazon EC2 实例运行后，[选择您的 VPC 端点](choose-service-endpoint.md#datasync-in-vpc)。

1. [激活您的代理](activate-agent.md)。

## 第 4 步：为您的 Google 云存储分区创建 DataSync 源位置
<a name="transfer-google-cloud-storage-create-source"></a>

要为您的 Google Cloud Storage 存储分区设置 DataSync 位置，您需要在[步骤 1](#transfer-google-cloud-storage-create-hmac-key) 中创建的 HMAC 密钥的访问权限 ID 和密钥。

**创建 DataSync 源位置**

1. 打开 AWS DataSync 控制台，网址为[https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/)。

1. 在左侧导航窗格中，展开**数据传输**，然后选择 **位置**和 **创建位置**。

1. 对于 **位置类型**，选择 **对象存储**。

1. 对于**服务器**，输入 **storage.googleapis.com**。

1. 对于**存储桶名称**，输入您的 Google Cloud Storage 存储桶的名称。

1. 对于 **文件夹**，请输入对象前缀。

   DataSync 仅复制带有此前缀的对象。

1. 如果传输需要代理，请选择**使用代理**，然后选择在[步骤 3](#transfer-google-cloud-storage-create-agent) 中创建的代理。

1. 展开**其他设置**。对于**服务器协议**，请选择 **HTTPS**。对于**服务器端口**，请选择 **443**。

1. 向下滚动到**身份验证**部分。确保选中 **需要凭据**复选框，然后执行以下操作：
   + 对于**访问密钥**，输入您的 HMAC 密钥访问 ID。
   + 对于**密钥**，可以直接输入 HMAC 密钥的密钥，也可以指定包含 AWS Secrets Manager 密钥的密钥。有关更多信息，请参阅[为存储位置提供凭证](https://docs.aws.amazon.com/datasync/latest/userguide/location-credentials.html)。

1. 选择**创建位置**。

## 步骤 5：为您的 S3 存储桶创建 DataSync 目标位置
<a name="transfer-google-cloud-storage-create-destination"></a>

你需要一个 DataSync 位置来存放你想要的数据存放位置。

**创建 DataSync 目标位置**

1. 打开 AWS DataSync 控制台，网址为[https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/)。

1. 在左侧导航窗格中，展开**数据传输**，然后选择 **位置**和 **创建位置**。

1. [为 S3 存储桶创建 DataSync 位置](create-s3-location.md)。

   如果您在您的 VPC 中部署了 DataSync 代理，则本教程假定 S3 存储桶与您的 VPC 和 DataSync 代理位于同一 AWS 区域 位置。

## 步骤 6：创建并启动 DataSync 任务
<a name="transfer-google-cloud-storage-start-task"></a>

配置好源位置和目标位置后，就可以开始将数据移入 AWS了。

**创建并启动 DataSync 任务**

1. 打开 AWS DataSync 控制台，网址为[https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/)。

1. 在左侧导航窗格中，展开**数据传输**，然后选择**任务**，然后选择**创建任务**。

1. 在**配置源位置**页面上，执行以下操作：

   1. 选择 **选择现有位置**。

   1. 选择您在[第 4 步](#transfer-google-cloud-storage-create-source) 中创建的源位置，然后选择 **下一步**。

1. 在**配置目标位置**页面上，执行以下操作：

   1. 选择 **选择现有位置**。

   1. 选择您在[第 5 步](#transfer-google-cloud-storage-create-destination) 中创建的目标位置，然后选择 **下一步**。

1. 在 **配置设置** 页面上，执行以下操作：

   1. 在 **数据传输配置**下，展开 **其他设置**，然后清除 **复制对象标签**复选框。
**重要**  
由于 Google Cloud Storage XML API 不支持读取或写入对象标签，因此如果您尝试复制对象标签，您的 DataSync 任务可能会失败。

   1. 配置所需的任何其他任务设置，然后选择 **下一步**。

1. 在 **审核**页面上，审核您的设置，然后选择 **创建任务**。

1. 在任务的详细信息页面上，选择**开始**，然后选择以下选项之一：
   + 如需运行任务而不进行修改，请选择**从默认值开始**。
   + 如需修改任务再运行，请选择**使用覆盖选项开始**。

任务完成后，您会在 S3 存储桶中看到 Google Cloud Storage 存储桶中的对象。