

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

# 使用 Amazon S3 适配器传输文件，以便将数据迁移到 Snowball Edge 或从 Snowball Edge 迁出
<a name="using-adapter"></a>

以下是 Amazon S3 适配器的概述，您可以使用该适配器通过 Amazon S3 REST API 操作以编程方式将数据传输到设备上已有的 S3 存储桶或从 AWS Snowball Edge 设备上传输数据。此处的 Amazon S3 REST API 支持仅限于一部分操作。您可以将此操作子集与其中一个操作配合使用， AWS SDKs 以编程方式传输数据。您还可以对 Amazon S3 使用这一部分受支持的 AWS Command Line Interface （AWS CLI）命令来以编程方式传输数据。

如果您的解决方案使用 1.11.0 或更高 适用于 Java 的 AWS SDK 版本，则必须使用以下版本：`S3ClientOptions`
+ `disableChunkedEncoding()`：表示接口不支持分块编码。
+ `setPathStyleAccess(true)`：将接口配置为针对所有请求使用路径式访问。

有关更多信息，请参阅适用于 *Java 的亚马逊 S AppStream DK* [中的 S3 类 ClientOptions .Builder。](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/S3ClientOptions.Builder.html)

**重要**  
我们建议您一次只使用一种方法在 AWS Snowball Edge 设备上的本地存储桶中读取和写入数据。在同一个存储桶上同时使用 NFS 接口和 Amazon S3 适配器可能会导致 read/write 冲突。  
[AWS Snowball Edge 配额](limits.md) 详细说明了限制。  
要使 AWS 服务在 Snowball Edge 上正常运行，必须允许服务使用端口。有关更多信息，请参阅 [Snowball Edge 上 AWS 服务的端口要求](port-requirements.md)。

**Topics**
+ [正在下载并安装 1.16.14 AWS CLI 版本以与 Amazon S3 适配器配合使用](#aws-cli-version)
+ [在 Snowball Edge 设备上使用 AWS CLI 和 API 操作](#using-adapter-cli-specify-region)
+ [在 Snowball Edge 上获取和使用本地 Amazon S3 证书](#adapter-credentials)
+ [Snowball Edge 上不支持亚马逊 S3 适配器的亚马逊 S3 功能](#snowball-edge-s3-unsupported-features)
+ [批量处理小文件以提高到 Snowball Edge 的数据传输性能](batching-small-files.md)
+ [支持用于向 Snowball Edge 传输数据或从中传输数据的 AWS CLI 命令](using-adapter-cli.md)
+ [在 Snowball Edge 上支持用于数据传输的 Amazon S3 REST API 操作](using-adapter-supported-api.md)

## 正在下载并安装 1.16.14 AWS CLI 版本以与 Amazon S3 适配器配合使用
<a name="aws-cli-version"></a>

目前，Snowball Edge 设备仅支持将 AWS CLI 的版本 1.16.14 及更低版本与 Amazon S3 Adapter 结合使用。较新版本与 Amazon S3 适配器不兼容，因为它们不支持 S3 适配器的所有功能。 AWS CLI 

**注意**  
如果您在 Snowball Edge 上使用与 Amazon S3 兼容的存储，则可以使用最新版本的。 AWS CLI要下载和使用最新版本，请参阅 [AWS Command Line Interface 用户指南](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)。

### 在 Linux 操作系统 AWS CLI 上安装
<a name="install-cli-linux"></a>

运行以下链式命令：

```
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.14.zip" -o "awscli-bundle.zip";unzip awscli-bundle.zip;sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws;/usr/local/bin/aws --version;
```

### 在 Windows 操作系统 AWS CLI 上安装
<a name="install-cli-windows"></a>

为操作系统下载并运行安装程序文件：
+ [与 Python 2 捆绑在一起的 32 位安装程序](https://s3.amazonaws.com/aws-cli/AWSCLI32-1.16.14.msi)
+ [与 Python 3 捆绑在一起的 32 位安装程序](https://s3.amazonaws.com/aws-cli/AWSCLI32PY3-1.16.14.msi)
+ [与 Python 2 捆绑在一起的 64 位安装程序](https://s3.amazonaws.com/aws-cli/AWSCLI64-1.16.14.msi)
+ [与 Python 3 捆绑在一起的 64 位安装程序](https://s3.amazonaws.com/aws-cli/AWSCLI64PY3-1.16.14.msi)
+ [安装文件包括 32 位和 64 位安装程序，这些安装程序可以自动安装正确的版本](https://s3.amazonaws.com/aws-cli/AWSCLISetup-1.16.14.exe)

## 在 Snowball Edge 设备上使用 AWS CLI 和 API 操作
<a name="using-adapter-cli-specify-region"></a>

使用 AWS CLI 或 API 操作在 Snowball Edge 上发出 IAM、Amazon S3 和 Amazon EC2 命令时，必须将该区域指定为 “” `snow`。 您可以使用命令本身`AWS configure`或在命令本身内执行此操作，如以下示例所示。

```
aws configure --profile abc
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: 1234567
Default region name [None]: snow
Default output format [None]: json
```

或

```
aws s3 ls  --endpoint http://192.0.2.0:8080 --region snow --profile snowballEdge
```

### 使用 AWS Snowball Edge的 Amazon S3 API 接口进行的授权
<a name="auth-adapter"></a>

当您使用 Amazon S3 适配器时，默认情况下，每次交互都使用 AWS 签名版本 4 算法进行签名。此授权仅用于验证从数据来源传输到接口的数据。所有加密和解密工作都在设备上完成。未加密的数据从不会存储在设备上。

在使用接口时，请记住以下几点：
+ 要获取用于为向 AWS Snowball Edge 设备发出的请求进行签名的本地 Amazon S3 凭证，请运行 `snowballEdge list-access-keys` 和 `snowballEdge get-secret-access-keys` Snowball Edge 客户端命令。有关更多信息，请参阅 [配置和使用 Snowball Edge 客户端](using-client-commands.md)。这些本地 Amazon S3 凭证包含一对密钥：一个访问密钥和一个私有密钥。这些密钥仅可用于与您的作业关联的设备。它们不能在中使用， AWS 云 因为它们没有 AWS Identity and Access Management (IAM) 对应物。
+ 加密密钥不会因您使用的 AWS 凭据而改变。使用签名版本 4 算法的签名仅用于验证从数据来源传输到接口的数据。因此，此签名永远不会影响用于加密 Snowball 上的数据的加密密钥。

## 在 Snowball Edge 上获取和使用本地 Amazon S3 证书
<a name="adapter-credentials"></a>

与 Snowball Edge 的每一次交互都使用签 AWS 名版本 4 算法进行签名。有关算法的更多信息，请参阅《AWS 一般参考》**中的[签名版本 4 签名流程](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。

通过运行和 `snowballEdge list-access-keys` 和 `snowballEdge get-secret-access-key` Snowball Edge 客户端信息，您可以获取本地 Amazon S3 凭证，以便签署您对 Snowball Edge 客户端 Edge 设备的请求，请参阅[获取 Snowball Edge 的凭证](using-client-commands.md#client-credentials)。这些本地 Amazon S3 凭证包含一对密钥：一个访问密钥 ID 和一个私有密钥。这些凭证仅可用于与您的作业关联的设备。它们不能在中使用， AWS 云 因为它们没有 IAM 对应物。

您可以将这些凭据添加到服务器上的 AWS 凭据文件中。默认的凭证配置文件通常位于 `~/.aws/credentials`，但该位置可能因平台而异。该文件由许多人共享， AWS SDKs 并由 AWS CLI. 您可以使用配置文件名称保存本地凭证，如以下示例所示。

```
[snowballEdge]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

### 配置 AWS CLI 为使用 Snowball Edge 上的 S3 适配器作为终端节点
<a name="using-adapter-cli-endpoint"></a>

当您使用 AWS CLI 向 AWS Snowball Edge 设备发出命令时，您指定终端节点是 Amazon S3 适配器。您可以选择使用 HTTPS 端点，或不安全的 HTTP 端点，如下所示。

**HTTPS 安全端点**

```
aws s3 ls --endpoint https://192.0.2.0:8443 --ca-bundle path/to/certificate --profile snowballEdge
```

**HTTP 不安全端点**

```
aws s3 ls --endpoint http://192.0.2.0:8080 --profile snowballEdge
```

如果您使用 HTTPS 端点 `8443`，则您的数据将从服务器安全地传输到 Snowball Edge。使用 Snowball Edge 在获取新 IP 地址时所生成的证书来确保此加密。在您具有证书后，可以将其保存到本地 `ca-bundle.pem` 文件。然后，您可以将配置 AWS CLI 文件配置为包含证书路径，如下所述。

**将您的证书与接口端点相关联**

1. 为 Snowball Edge 接通电源并将其连接到网络，然后启动它。

1. 在设备启动完成后，记下其在本地网络上的 IP 地址。

1. 从您的网络上的终端，确保您可以对 Snowball Edge 执行 ping 操作。

1. 在您的终端中运行 `snowballEdge get-certificate` 命令。有关此命令的更多信息，请参阅 [在 Snowball Edge 上管理公钥证书](snowball-edge-certificates-cli.md)。

1. 将 `snowballEdge get-certificate` 命令的输出保存到文件，例如 `ca-bundle.pem`。

1. 从您的终端运行以下命令。

   ```
   aws configure set profile.snowballEdge.ca_bundle /path/to/ca-bundle.pem
   ```

在您完成此过程之后，可以使用这些本地凭证、您的证书和您指定的端点运行 CLI 命令，如以下示例所示。

```
aws s3 ls --endpoint https://192.0.2.0:8443 --profile snowballEdge
```

## Snowball Edge 上不支持亚马逊 S3 适配器的亚马逊 S3 功能
<a name="snowball-edge-s3-unsupported-features"></a>

使用 Amazon S3 Adapter，您可以以编程方式通过 Amazon S3 API 操作在 Snowball Edge 中传输数据。但是，并非所有 Amazon S3 传输特征和 API 操作支持在使用 Amazon S3 Adapter 时用于 Snowball Edge 设备。例如，以下特征和操作不支持用于 Snowball Edge：
+ [TransferManager](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/examples-s3-transfermanager.html)— 此实用程序使用适用于 Java 的 SDK 将文件从本地环境传输到 Amazon S3。考虑改为将支持的 API 操作或 AWS CLI 命令与接口结合使用。
+ [GET 存储桶（列出对象）版本 2](https://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html)：此 GET 操作的实施返回存储库中的部分或全部（最多 1,000 个）对象。考虑使用 [GET 存储桶（列出对象）版本 1](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) 操作或 [ls](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html) AWS CLI 命令。
+ [ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)— 不支持 ListBuckets 带有对象端点的。以下命令不适用于 Snowball Edge 上与亚马逊 S3 兼容的存储：

  ```
  aws s3 ls --endpoint https://192.0.2.0 --profile profile                    
  ```

# 批量处理小文件以提高到 Snowball Edge 的数据传输性能
<a name="batching-small-files"></a>

因为要进行加密，每个复制操作都会产生一些开销。为了加快将小文件传输到 AWS Snowball Edge 设备的过程，您可以将它们一起批处理到一个存档中。批量处理文件时，在将它们导入到 Amazon S3 中时可以进行自动提取（如果以一个受支持的存档格式对它们进行批处理）。

通常，1 MB 或更小的文件应包含在批处理中。对您可以在一个批处理中拥有的文件数量没有硬限制，虽然我们建议您将批处理限制在约 10,000 个文件。一个批处理中的文件超过 100,000 个可能会影响您返回设备后这些文件导入 Amazon S3 的速度。我们建议每个批次的总大小不超过 100 GB。

批处理文件是一个手动过程，您管理该过程。对文件进行批处理后，使用带有选项的 AWS CLI `cp`命令将它们传输到 Snowball Edge 设备。`--metadata snowball-auto-extract=true`如果指定 `snowball-auto-extract=true`，在数据导入 Amazon S3 时，只要批处理文件的大小不超过 100 GB，将自动提取存档文件的内容。

**注意**  
任何大于 100 GB 的批次在导入到 Amazon S3 时都不会被提取。

**要批量处理小文件，请执行以下操作**

1. 决定要以哪种格式批处理您的小文件。自动提取功能支持 `TAR`、`ZIP` 和 `tar.gz` 格式。

1. 确定要批量处理那些小文件，包括它们的大小和要批量处理的文件的总数。

1. 在命令行上批处理文件，如以下示例所示。
   + 对于 Linux，您可以在用于将文件传输到设备的相同命令行中批处理这些文件。

     ```
     tar -cf - /Logs/April | aws s3 cp - s3://amzn-s3-demo-bucket/batch01.tar --metadata snowball-auto-extract=true --endpoint http://192.0.2.0:8080
     ```
**注意**  
或者，您可以使用您选择的存档实用工具将文件批量处理到一个或多个大型档案。但是，这种方法需要额外的本地存储空间来保存档案，然后再将其传输到 Snowball Edge。
   + 对于 Windows，当所有文件都位于运行该命令的同一目录中时，请使用以下示例命令对文件进行批处理：

     ```
     7z a -tzip -so "test" | aws s3 cp - s3://amzn-s3-demo-bucket/batch01.zip --metadata snowball-auto-extract=true --endpoint http://192.0.2.0:8080
     ```

     要对运行命令的不同目录中的文件进行批量处理，请使用以下示例命令：

     ```
     7z a -tzip -so "test" "c:\temp" | aws s3 cp - s3://amzn-s3-demo-bucket/batch01.zip --metadata snowball-auto-extract=true --endpoint http://10.x.x.x:8080
     ```
**注意**  
对于 Microsoft Windows 2016，tar 不可用，但您可以从 *Tar for Windows* 网站下载。  
您可以从 7ZIP 网站下载 7 ZIP。

1. 重复此步骤，直到您已存档所有要使用 Snowball Edge 传输到 Amazon S3 的小文件。

1. 将存档的文件传输到 Snowball。如果您希望自动提取数据，并且使用了前面在步骤 1 中提到的支持的存档格式之一，请使用带`--metadata snowball-auto-extract=true`选项的 AWS CLI `cp`命令。
**注意**  
如果存在非存档文件，请不要使用此命令。

创建存档文件时，提取将保持当前的数据结构。这意味着，如果您创建包含文件和文件夹的存档文件，Snowball Edge 将在提取到 Amazon S3 的过程中重新创建该文件。

存档文件将解压缩到其存储位置的同一目录中，并相应地构建文件夹结构。请记住，在复制存档文件时，设置标志 `--metadata snowball-auto-extract=true` 很重要。否则，当数据导入到 Amazon S3 时，Snowball Edge 将不会提取数据。

使用第 3 步中的示例，如果您的文件夹结构为 /Logs/April/，其中包含文件 `a.txt`、`b.txt` 和 `c.txt`。如果将此存档文件放在 /amzn-s3-demo-bucket/ 的根目录中，则提取后的数据将如下所示：

```
/amzn-s3-demo-bucket/Logs/April/a.txt
/amzn-s3-demo-bucket/Logs/April/b.txt
/amzn-s3-demo-bucket/Logs/April/c.txt
```



如果将此存档文件放在 /amzn-s3-demo-bucket/Test/ 中，则提取的内容将如下所示：

```
/amzn-s3-demo-bucket/Test/Logs/April/a.txt
/amzn-s3-demo-bucket/Test/Logs/April/b.txt
/amzn-s3-demo-bucket/Test/Logs/April/c.txt
```

# 支持用于向 Snowball Edge 传输数据或从中传输数据的 AWS CLI 命令
<a name="using-adapter-cli"></a>

接下来，您可以找到有关如何在 Snowball Edge 上将 Amazon S3 适配器或 Amazon S3 兼容存储指定为适用 AWS Command Line Interface (AWS CLI) 命令的终端节点的信息。您还可以在 Snowball Edge 上找到支持将数据传输到带有适配器的 AWS Snowball Edge 设备或 Amazon S3 兼容存储设备的亚马逊 S3 AWS CLI 命令列表。

**注意**  
有关安装和设置的信息 AWS CLI，包括指定要针对哪些区域进行 AWS CLI 呼叫，请参阅[《AWS Command Line Interface 用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

目前，Snowball Edge 设备仅支持在使用 Amazon S3 Adapter 时使用 AWS CLI 的版本 1.16.14 及更低版本。请参阅 [查找 Snowball Edge 客户端版本](using-adapter.md#aws-cli-version)。如果您在 Snowball Edge 上使用与 Amazon S3 兼容的存储，则可以使用最新版本的。 AWS CLI要下载和使用最新版本，请参阅 [AWS Command Line Interface 用户指南](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)。

**注意**  
在安装 AWS CLI版本 1.16.14 之前，请务必安装 Python 版本 2.6.5\$1 或 3.4\$1。

## 支持 AWS CLI 使用 Amazon S3 和 Snowball Edge 传输数据的命令
<a name="using-adapter-cli-commands"></a>

以下是该 AWS Snowball Edge 设备支持的 Amazon S3 AWS CLI 命令和选项子集的描述。如果某个命令或选项未列出，则表明它不受支持。您可以声明一些不受支持的选项（如 `--sse` 或 `--storage-class`）以及一个命令。但是，这些选项会被忽略，并且不会对导入数据的方式产生任何影响。
+ [cp](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) — 将文件或对象复制到设备或从 AWS Snowball Edge 设备复制出来。以下是此命令的选项：
  + `--dryrun`（布尔值）：仅显示使用指定命令要执行的操作，但不运行。
  + `--quiet`（布尔值）：不显示使用指定命令执行的操作。
  + `--include`（字符串）：不从命令中排除与指定模式匹配的文件或对象。有关详细信息，请参阅《AWS CLI 命令参考》**中的[使用 Exclude 和 Include 筛选条件](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters)。
  + `--exclude`（字符串）：从命令中排除与指定模式匹配的所有文件或对象。
  + `--follow-symlinks | --no-follow-symlinks`（布尔值）：仅当从本地文件系统上传到 Amazon S3 时，才会访问符号链接。Amazon S3 不支持符号链接，因此应以链接的名称上传链接目标的内容。如果未指定任何选项，则默认访问符号链接。
  + `--only-show-errors`（布尔值）：仅显示错误和警告。禁止其他所有输出。
  + `--recursive`（布尔值）：针对指定目录或前缀下的所有文件或对象执行命令。
  + `--page-size`（整数）：要在一个列表操作的每个响应中返回的结果数。默认值为 1000（允许的最大值）。如果操作超时，则使用较低的值可能会很有用。
  + `--metadata`（映射）：要存储的元数据与 Amazon S3 中对象之间的映射。此映射将应用于作为此请求的一部分的每个对象。在同步中，此功能意味着未更改的文件将无法接收新的元数据。在两个 Amazon S3 位置之间复制时，除非另行指定，否则 `metadata-directive` 参数默认为 `REPLACE`。
+ [ls](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html) — 列出 AWS Snowball Edge 设备上的对象。以下是此命令的选项：
  + `--human-readable`（布尔值）：以人类可读的格式显示文件大小。
  + `--summarize`（布尔值）：将显示摘要信息。此信息为对象的数量及其总大小。
  + `--recursive`（布尔值）：针对指定目录或前缀下的所有文件或对象执行命令。
  + `--page-size`（整数）：要在一个列表操作的每个响应中返回的结果数。默认值为 1000（允许的最大值）。如果操作超时，则使用较低的值可能会很有用。
+ [rm](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html) — 删除 AWS Snowball Edge 设备上的对象。以下是此命令的选项：
  + `--dryrun`（布尔值）：仅显示使用指定命令要执行的操作，但不运行。
  + `--include`（字符串）：不从命令中排除与指定模式匹配的文件或对象。有关详细信息，请参阅《AWS CLI 命令参考》**中的[使用 Exclude 和 Include 筛选条件](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters)。
  + `--exclude`（字符串）：从命令中排除与指定模式匹配的所有文件或对象。
  + `--recursive`（布尔值）：针对指定目录或前缀下的所有文件或对象执行命令。
  + `--page-size`（整数）：要在一个列表操作的每个响应中返回的结果数。默认值为 1000（允许的最大值）。如果操作超时，则使用较低的值可能会很有用。
  + `--only-show-errors`（布尔值）：仅显示错误和警告。禁止其他所有输出。
  + `--quiet`（布尔值）：不显示使用指定命令执行的操作。
+ [sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html)：同步目录和前缀。此命令将源目录中的新文件和更新过的文件复制到目的地。此命令仅在目的地创建目录（如果文件夹包含一个或多个文件）。
**重要**  
不支持在同一个 Snowball Edge 上从一个目录同步到另一个目录。  
不支持从一 AWS Snowball Edge 台设备同步到另一 AWS Snowball Edge 台设备。  
您只能使用此选项在本地数据存储和 Snowball Edge 之间同步内容。
  + `--dryrun`（布尔值）：仅显示使用指定命令要执行的操作，但不运行。
  + `--quiet`（布尔值）：不显示使用指定命令执行的操作。
  + `--include`（字符串）：不从命令中排除与指定模式匹配的文件或对象。有关详细信息，请参阅《AWS CLI 命令参考》**中的[使用 Exclude 和 Include 筛选条件](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters)。
  + `--exclude`（字符串）：从命令中排除与指定模式匹配的所有文件或对象。
  + `--follow-symlinks` 或 `--no-follow-symlinks`（布尔值）：仅当从本地文件系统上传到 S3 时，才会访问符号链接。Amazon S3 不支持符号链接，因此应以链接的名称上传链接目标的内容。如果未指定任何选项，则默认访问符号链接。
  + `--only-show-errors`（布尔值）：仅显示错误和警告。禁止其他所有输出。
  + `--no-progress`（布尔值）：不显示文件传输进度。此选项仅在未提供 `--quiet` 和 `--only-show-errors` 选项时应用。
  + `--page-size`（整数）：要在一个列表操作的每个响应中返回的结果数。默认值为 1000（允许的最大值）。如果操作超时，则使用较低的值可能会很有用。
  + `--metadata`（映射）：要存储的元数据与 Amazon S3 中对象之间的映射。此映射将应用于作为此请求的一部分的每个对象。在同步中，此功能意味着未更改的文件将无法接收新的元数据。在两个 Amazon S3 位置之间复制时，除非另行指定，否则 `metadata-directive` 参数默认为 `REPLACE`。
**重要**  
不支持在同一个 Snowball Edge 上从一个目录同步到另一个目录。  
不支持从一 AWS Snowball Edge 台设备同步到另一 AWS Snowball Edge 台设备。  
您只能使用此选项在本地数据存储和 Snowball Edge 之间同步内容。
  + `--size-only`（布尔值）：利用此选项，每个密钥的大小是用来决定是否从源同步到目标的唯一标准。
  + `--exact-timestamps`（布尔值）：在从 S3 同步到本地存储时，仅在时间戳完全匹配时忽略大小相同的项。除非本地版本比 Amazon S3 版本更新，否则，默认行为是忽略大小相同的项。
  + `--delete`（布尔值）：在同步期间，将删除目标中存在而源中不存在的文件。

您可以使用名称中有空格的文件或文件夹，如 `my photo.jpg` 或 `My Documents`。但是，请确保正确处理 AWS CLI 命令中的空格。有关更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[指定 AWS CLI 的参数值](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html)。

# 在 Snowball Edge 上支持用于数据传输的 Amazon S3 REST API 操作
<a name="using-adapter-supported-api"></a>

在下文中，您可以找到使用 Amazon S3 Adapter 时可使用的 Amazon S3 REST API 操作的列表。此列表包括有关 API 操作如何与 Amazon S3 配合使用的信息的链接。该列表还涵盖了 Amazon S3 API 操作与 AWS Snowball Edge 设备对应操作之间的任何行为差异。从 AWS Snowball Edge 设备返回的所有响应都声明 `Server` 为 `AWSSnowball`，如以下示例所示。

```
HTTP/1.1 201 OK
x-amz-id-2: JuKZqmXuiwFeDQxhD7M8KtsKobSzWA1QEjLbTMTagkKdBX2z7Il/jGhDeJ3j6s80
x-amz-request-id: 32FE2CEB32F5EE25
Date: Fri, 08 2016 21:34:56 GMT
Server: AWSSnowball
```

Amazon S3 REST API 调用需要 SigV4 签名。如果您使用 AWS CLI 或 AWS SDK 进行这些 API 调用，则会为您处理 Sigv4 签名。否则，您需要实施自己的 SigV4 签名解决方案。有关更多信息，请参阅 Amazon 简单存储服务用户指南中的对[请求进行身份验证（AWS 签名版本 4）](https://docs.aws.amazon.com/AmazonS3/latest/userguide/sig-v4-authenticating-requests.html)。
+ [GET 存储桶（列出对象）版本 1](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html)：支持。但是，在 GET 操作的实施中，不支持以下内容：
  + 分页
  + 标记
  + 分隔符
  + 在返回列表时，未对列表进行排序

  仅支持版本 1。不支持 GET 存储桶（列出对象）版本 2。
+ [GET 服务](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTServiceGET.html) 
+ [HEAD 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketHEAD.html) 
+ [HEAD 对象](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html) 
+ [GET 对象](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)：是指从 Snow 设备的 S3 存储桶中下载的对象。
+ PU@@ [T O](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) bject-使用将对象上传到 AWS Snowball Edge 设备时`PUT Object`，会生成一个 ETag 。

   ETag 是对象的哈希值。仅 ETag 反映对象内容的更改，而不反映其元数据的更改。 ETag 可能是也可能不是对象数据的 MD5 摘要。有关更多信息 ETags，请参阅《*亚马逊简单存储服务 API 参考》中的[常见响应标头](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html)。*
+ [DELETE 对象](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) 
+ [启动分段上传](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)-在此实现中，为 AWS Snowball Edge 设备上已有的对象启动分段上传请求会首先删除该对象。然后，它会将其分部分复制到 AWS Snowball Edge 设备上。
+ [列出分段上传](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadListMPUpload.html) 
+ [上传分段](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html) 
+ [完成分段上传](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html) 
+ [中止分段上传](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadAbort.html) 

**注意**  
不支持此处未列出的任何 Amazon S3 Adapter REST API 操作。将任何不受支持的 REST API 操作与 Snowball Edge 结合使用会返回错误消息，说明不支持此操作。