使用 Amazon S3 接口传输文件 - Amazon Snowball Edge 开发人员指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 Amazon S3 接口传输文件

以下是 Amazon S3 接口的概述,您可以使用该接口通过 Amazon S3 REST API 操作以编程方式在Amazon Snowball Edge设备之间传输数据。对Amazon S3 REST API 的支持仅限于部分操作。您可以将这部分操作与其中一个Amazon SDK 一起使用,以编程方式传输数据。您还可以使用 Amazon S3 支持的Amazon Command Line Interface (Amazon CLI) 命令子集以编程方式传输数据。

如果您的解决方案使用 Amazon SDK for Java 版本 1.11.0 或更新版本,则您必须使用以下 S3ClientOptions

  • disableChunkedEncoding()— 表示接口不支持分块编码。

  • setPathStyleAccess(true)— 将接口配置为对所有请求使用路径式访问权限。

有关更多信息,请参阅适用于 Java 的亚马逊 AppStream 开发工具包中的 Class S 3ClientOptions .Builder

重要

我们建议您一次仅使用一种方法将数据读取和写入Amazon Snowball Edge设备上的本地存储桶。在同一个存储桶上同时使用文件接口和 Amazon S3 接口可能会导致读/写冲突。

上的速率限制Amazon Snowball Edge详细说明了限制。

要使Amazon服务在 Snowball Edge 上正常运行,必须允许服务的端口。有关详细信息,请参阅使用所需的端口Amazon上的服务Amazon SnowballEdge 设备

下载并安装 Amazon CLI 版本 1.16.14

目前,Snowball Edge 设备仅支持 1.16.14 及更早版本的Amazon CLI。请针对操作系统使用以下过程执行此任务。

请Amazon CLI在 Linux 操作系统上安装

运行以下命令:

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;

请Amazon CLI在 Windows 操作系统上安装

为操作系统下载、运行安装程序文件:

在 Snowball Edge 上使用Amazon CLI和 API 操作

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

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

或者

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

使用Amazon S3 API 接口进行授权Amazon Snowball

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

使用界面时,请记住以下几点:

  • 要获取本地 Amazon S3 凭证来签署您对Amazon Snowball Edge设备的请求,请运行snowballEdge list-access-keys和 SsnowballEdge get-secret-access-keys nowball Edge 客户端命令。有关更多信息,请参阅 使用 Snowball Edge 客户端。这些本地 Amazon S3 证书包括一对密钥:访问密钥和私有密钥。这些密钥仅可用于与您的任务关联的设备。它们不能在中使用,Amazon Web Services 云因为它们没有Amazon Identity and Access Management (IAM) 对应物。

  • 加密密钥不会因您使用的Amazon Web Services凭据而改变。使用签名版本 4 算法进行签名仅用于验证从其源传输到接口的数据。因此,这种签名决不会将用于在 Snowball 上加密数据的加密密钥考虑在内。

获取和使用本地 Amazon S3 证书

每次与 Snowball Edge 的交互都使用Amazon签名版本 4 算法签名。有关算法的更多信息,请参阅《Amazon一般参考》中的签名版本 4 签名流程

通过运行和 Snowball Edge 客户端信息,您可以获取本地 Amazon S3 凭证来签署您对 SsnowballEdge get-secret-access-key nowball Edge 客户端 Edge 设备的请求,请参阅获取凭证snowballEdge list-access-keys这些本地 Amazon S3 凭证包含一对密钥:一个访问密钥 ID 和一个私有密钥。这些凭证仅可用于与您的作业关联的设备。它们不能在中使用,Amazon Web Services 云因为它们没有 IAM 对应物。

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

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

将 S3 接口指定为Amazon CLI终端节点

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

HTTPS 安全终端节点

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

HTTP 不安全终端节点

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

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

将您的证书与接口终端节点关联

  1. 将 Snowball Edge Connect 电源和网络,然后将其打开。

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

  3. 在网络上的终端上,确保你能够 ping Snowball Edge。

  4. 在您的终端中运行 snowballEdge get-certificate 命令。有关此命令的更多信息,请参阅 获取您的证书以传输数据

  5. snowballEdge get-certificate 命令的输出保存到文件,例如 ca-bundle.pem

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

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

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

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

Snowball 边缘不支持的 Amazon S3 功能

使用 Amazon S3 接口,您可以使用 Amazon S3 API 操作以编程方式在 Snowball Edge 之间传输数据。但是,并非所有 Amazon S3 传输功能和 API 操作都支持在 Snowball Edge 设备上使用。例如,Snowball Edge 不支持使用以下功能和操作: