AWS Snowball
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本指南适用于 Snowball Edge。如果您正在查找 Snowball 的相关文档,请参阅 AWS Snowball 用户指南

Snowball 客户端的命令

在下文中,您可找到有关 Snowball 客户端命令的信息,包括使用示例和示例输出。

为 Snowball 客户端配置配置文件

每次为 Snowball 客户端运行命令时,都要提供您的清单文件、解锁代码和 IP 地址。您可以通过 AWS Snowball 管理控制台或作业管理 API 获取其中前两个。有关获取您的清单和解锁代码的更多信息,请参阅获取凭证和工具

您可以选择使用 snowballEdge configure 命令将清单的路径、29 个字符组成的解锁代码和终端节点存储为一个配置文件。配置完成后,您可以使用其他 Snowball 客户端命令,而不必为特定任务手动键入这些值。在配置了 Snowball 客户端 之后,信息将以纯文本的 JSON 格式保存到 home directory/.aws/snowball/config/snowball-edge.config

终端节点为附加了 https:// 的 IP 地址。您可以在 AWS Snowball Edge 设备的 LCD 显示屏上找到 AWS Snowball Edge 设备的 IP 地址。AWS Snowball Edge 设备首次连接到您的网络时,会自动获取 DHCP IP 地址 (如果 DHCP 服务器可用)。如果您要使用其他 IP 地址,可以从 LCD 显示屏上进行更改。有关更多信息,请参阅 使用 AWS Snowball Edge

重要

可访问配置文件的任何人都可以访问 Snowball Edge 设备或集群上的数据。管理此文件的本地访问控制是您的管理责任之一。

用法

您可以通过两种方式使用此命令:内联或在提示时。此使用示例显示的是提示方法。

snowballEdge configure

例 输出

Configuration will stored at home directory\.aws\snowball\config\snowball-edge.config Snowball Edge Manifest Path: Path/to/manifest/file Unlock Code: 29 character unlock code Default Endpoint: https://192.0.2.0

如果您同时具有多个任务,或者希望选择从不同的终端节点管理集群,则可以具有多个配置文件。有关多个 AWS CLI 配置文件的更多信息,请参阅 AWS Command Line Interface 用户指南 中的命名配置文件

获取用于 NFC 验证的 QR 代码

您可以使用此命令生成特定于设备的 QR 代码,以便与 AWS Snowball Edge Verification App 一起使用。您可以从 Apple 应用商店或 Google Play 商店下载此应用程序。有关 NFC 验证的更多信息,请参阅验证 NFC 标签

用法

snowballEdge get-app-qr-code --output-file ~/downloads/snowball-qr-code.png

例 输出

QR code is saved to ~/downloads/snowball-qr-code.png

解锁 Snowball Edge 设备

要解锁独立 AWS Snowball Edge 设备,请运行 snowballEdge unlock-device 命令。要解锁集群,请使用 snowballEdge unlock-cluster 命令。这些命令将验证您对 AWS Snowball Edge 设备的访问权限。

注意

要解锁与您的任务关联的设备,这些设备必须位于现场、已接通电源、接入网络并已启动。此外,AWS Snowball Edge 设备前面的 LCD 显示屏必须指明设备已准备就绪,可供使用。

用法(已配置 Snowball 客户端)

snowballEdge unlock-device

例 单个设备解锁输入

snowballEdge unlock-device

例 单个设备解锁输出

Your Snowball Edge device is unlocking. You may determine the unlock state of your device using the describe-device command. Your Snowball Edge device will be available for use when it is in the UNLOCKED state.

集群用法

在解锁集群时,提供您的某个节点的终端节点,以及集群中其他设备的所有 IP 地址。

snowballEdge unlock-cluster --endpoint https://192.0.2.0 --manifest-file Path/to/manifest/file --unlock-code 01234-abcde-ABCDE-01234 --device-ip-addresses 192.0.2.0 192.0.2.1 192.0.2.2 192.0.2.3 192.0.2.4

例 集群解锁输出

Your Snowball Edge Cluster is unlocking. You may determine the unlock state of your cluster using the describe-device command. Your Snowball Edge Cluster will be available for use when your Snowball Edge devices are in the UNLOCKED state.

更新 Snowball Edge

以下命令可用于下载和安装您的 Snowball Edge 设备的更新。有关使用这些命令的过程,请参阅更新 AWS Snowball Edge

snowballEdge check-for-updates:返回有关云中可用的 Snowball Edge 软件以及设备上安装的当前版本的版本信息。

用法(已配置 Snowball 客户端)

snowballEdge check-for-updates

例 输出

Latest version: 102 Installed version: 101

snowballEdge describe-device-software:返回设备的当前软件版本。此外,如果正在下载更新,则还会显示下载状态。如果软件更新正在进行中,则还会显示更新的版本清单以及安装的状态。下面是可能的输出的列表:

  • NA – 当前没有软件更新正在进行中。

  • Downloading – 正在下载新软件。

  • Installing – 正在安装新软件。

  • Requires Reboot – 新软件已安装,而且需要重启设备。

    警告

    我们强烈建议您先暂停设备上的所有活动,然后再重启设备。重启设备将停止正在运行的实例,中断对设备上的 Amazon S3 存储桶的任何写入操作,以及从文件接口停止任何写入操作而不清除缓存。所有这些过程都可能会导致丢失数据。

用法(已配置 Snowball 客户端)

snowballEdge describe-device-software

例 输出

Installed version: 101 Installing version: 102 Install State: Downloading

snowballEdge download-updates:开始下载 Snowball Edge 的最新软件更新。

用法(已配置 Snowball 客户端)

snowballEdge download-updates

例 输出

Download started. Run describe-device-software API for additional information.

snowballEdge install-updates:开始安装已下载的 Snowball Edge 的最新软件更新。

用法(已配置 Snowball 客户端)

snowballEdge install-updates

例 输出

Installation started.

snowballEdge reboot-device:重启设备。

警告

我们强烈建议您先暂停设备上的所有活动,然后再重启设备。重启设备将停止正在运行的实例,中断对设备上的 Amazon S3 存储桶的任何写入操作,以及从文件接口停止任何写入操作而不清除缓存。所有这些过程都可能会导致丢失数据。

用法(已配置 Snowball 客户端)

snowballEdge reboot-device

例 输出

Rebooting device now.

snowballEdge configure-auto-update-strategies:配置自动更新策略。

用法(已配置 Snowball 客户端)

snowballEdge configure-auto-update-strategy --auto-check autoCheck [--auto-check-frequency autoCheckFreq] --auto-download autoDownload [--auto-download-frequency autoDownloadFreq] --auto-install autoInstall [--auto-install-frequency autoInstallFreq] --auto-reboot autoReboot [--endpoint endpoint]

例 输出

Successfully configured auto update strategy. Run describe-auto-update-strategies for additional information.

snowballEdge describe-auto-update-strategies:返回任何当前配置的自动更新策略。

用法(已配置 Snowball 客户端)

snowballEdge describe-auto-update-strategies

例 输出

auto-update-strategy {[ auto-check:true, auto-check-frequency: "0 0 * * FRI", // CRON Expression String, Every Friday at midnight auto-download:true, auto-download-frequency: "0 0 * * SAT", // CRON Expression String, Every Saturday at midnight auto-install:true, auto-install-frequency: "0 13 * * Sun", // CRON Expression String, Every Saturday at midnight auto-reboot: false; ]}

获取凭证

使用 snowballEdge list-access-keyssnowballEdge get-secret-access-key 命令,可以获取您的本地凭证。在使用 AWS CLI 或 AWS 开发工具包时,可以使用这些凭证对您的请求进行身份验证。这些凭证仅与 Snowball Edge 的单个任务相关联,且仅可用于设备或设备集群。设备或设备集群在 AWS 云中并不具有任何 AWS Identity and Access Management (IAM) 权限。

注意

如果您将 AWS CLI 与 Snowball Edge 结合使用,则必须在配置 CLI 时使用这些凭证。有关为 CLI 配置凭证的信息,请参阅 AWS Command Line Interface 用户指南 中的快速配置

用法(已配置 Snowball 客户端)

snowballEdge list-access-keys

例 输出

{ "AccessKeyIds" : [ "AKIAIOSFODNN7EXAMPLE" ] }

用法(已配置 Snowball 客户端)

snowballEdge get-secret-access-key --access-key-id Access Key

例 输出

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

在 Snowball Edge 上启动服务

Snowball Edge 设备除支持 Amazon S3 之外,还支持多个服务。这包括计算实例、文件接口和 AWS IoT Greengrass。默认情况下,Amazon S3 和 Amazon EC2 始终是开启的,但不能使用 Snowball 客户端停止或重新启动。但是,可以使用 snowballEdge start-service 命令启动文件接口和 AWS IoT Greengrass。要获取每个服务的服务 ID,您可以使用 snowballEdge list-services 命令。

运行此命令之前,请创建一个虚拟网络接口以绑定到您要启动的服务。有关更多信息,请参阅 创建虚拟网络接口

用法(已配置 Snowball 客户端)

snowballEdge start-service --service-id service_id --virtual-network-interface-arns virtual-network-interface-arn

例 输出

Starting the AWS service on your Snowball Edge. You can determine the status of the AWS service using the describe-service command.

在 Snowball Edge 上停止服务

要停止正在 Snowball Edge 上运行的服务,您可以使用 snowballEdge stop-service 命令。Amazon S3 和 Amazon EC2 服务无法停止。

警告

如果文件接口在将剩余的缓冲数据写入设备之前停止,则可能会丢失数据。有关使用文件接口的更多信息,请参阅对 AWS Snowball Edge 使用文件接口

用法(已配置 Snowball 客户端)

snowballEdge stop-service --service-id service_id

例 输出

Stopping the AWS service on your Snowball Edge. You can determine the status of the AWS service using the describe-service command.

获取您的证书以传输数据

要将数据传输到 Snowball Edge,请使用 适用于 Snowball 的 Amazon S3 Adapter。要通过 HTTPS 协议使用适配器,您必须提供证书。证书由每个 Snowball Edge 设备生成。如果您解锁具有其他 IP 地址的 Snowball Edge 设备,则会生成新证书,旧证书不再可用于终端节点。您可以再次使用 get-certificate 命令从 Snowball Edge 获取新的已更新证书。

可以使用以下命令列出这些证书并从您的 Snowball Edge 设备下载它们:

  • list-certificates – 列出可供使用的证书的 Amazon 资源名称 (ARN)。

    用法(已配置 Snowball 客户端)

    snowballEdge list-certificates

    例 输出

    { "Certificates" : [ { "CertificateArn" : "arn:aws:snowball-device:::certificate/78EXAMPLE516EXAMPLEf538EXAMPLEa7", "SubjectAlternativeNames" : [ "192.0.2.0" ] } ] }
  • get-certificate – 根据提供的 ARN 获取特定证书。

    用法(已配置 Snowball 客户端)

    snowballEdge get-certificate --certificate-arn arn:aws:snowball-device:::certificate/78EXAMPLE516EXAMPLEf538EXAMPLEa7

    例 输出

    -----BEGIN CERTIFICATE----- Certificate -----END CERTIFICATE-----

    有关配置证书的信息,请参阅将适配器指定为 AWS CLI 终端节点

AWS Snowball Edge 日志

当您在本地数据中心和 Snowball Edge 之间传输数据时,系统将会自动生成日志。如果您在将数据传输到设备的过程中遇到意外错误,则可以使用以下命令将日志副本保存到本地服务器。

有三个与日志相关的命令:

  • list-logs – 返回 JSON 格式的日志列表。此列表报告日志的大小 (以字节为单位)、日志的 ARN、日志的服务 ID 和日志的类型。

    用法(已配置 Snowball 客户端)

    snowballEdge list-logs

    例 输出

    { "Logs" : [ { "LogArn" : "arn:aws:snowball-device:::log/s3-storage-JIEXAMPLE2f-1234-4953-a7c4-dfEXAMPLE709", "LogType" : "SUPPORT", "ServiceId" : "s3", "EstimatedSizeBytes" : 53132614 }, { "LogArn" : "arn:aws:snowball-device:::log/fileinterface-JIDEXAMPLEf-1234-4953-a7c4-dfEXAMPLE709", "LogType" : "CUSTOMER", "ServiceId" : "fileinterface", "EstimatedSizeBytes" : 4446 }] }
  • get-log – 从 Snowball Edge 将特定日志副本下载到指定路径的服务器上。CUSTOMER 日志保存为 .zip 格式,并且可解压缩此类型的日志以查看其内容。SUPPORT 日志已加密,只能由 AWS Support 工程师读取。您可以选择为日志指定名称和路径。

    用法(已配置 Snowball 客户端)

    snowballEdge get-log --log-arn arn:aws:snowball-device:::log/fileinterface-JIDEXAMPLEf-1234-4953-a7c4-dfEXAMPLE709

    例 输出

    Logs are being saved to download/path/snowball-edge-logs-1515EXAMPLE88.bin
  • get-support-logs – 从 Snowball Edge 将所有 SUPPORT 类型的日志副本下载到指定路径的服务器上。

    用法(已配置 Snowball 客户端)

    snowballEdge get-support-logs

    例 输出

    Logs are being saved to download/path/snowball-edge-logs-1515716135711.bin

重要

CUSTOMER 类型可能包含有关您自己的数据的敏感信息。为了保护此潜在敏感信息,我们强烈建议您在用完这些日志之后将其删除。

获取设备状态

可以使用以下 Snowball 客户端命令确定 Snowball Edge 设备的状态和整体运行状况:

  • describe-device

    用法(已配置 Snowball 客户端)

    snowballEdge describe-device

    例 输出

    { "DeviceId" : "JID-EXAMPLE12345-123-456-7-890", "UnlockStatus" : { "State" : "UNLOCKED" }, "ActiveNetworkInterface" : { "IpAddress" : "192.0.2.0" }, "PhysicalNetworkInterfaces" : [ { "PhysicalNetworkInterfaceId" : "s.ni-EXAMPLEd9ecbf03e3", "PhysicalConnectorType" : "RJ45", "IpAddressAssignment" : "STATIC", "IpAddress" : "0.0.0.0", "Netmask" : "0.0.0.0", "DefaultGateway" : "192.0.2.1", "MacAddress" : "EX:AM:PL:E0:12:34" }, { "PhysicalNetworkInterfaceId" : "s.ni-EXAMPLE4c3840068f", "PhysicalConnectorType" : "QSFP", "IpAddressAssignment" : "STATIC", "IpAddress" : "0.0.0.0", "Netmask" : "0.0.0.0", "DefaultGateway" : "192.0.2.2", "MacAddress" : "EX:AM:PL:E0:56:78" }, { "PhysicalNetworkInterfaceId" : "s.ni-EXAMPLE0a3a6499fd", "PhysicalConnectorType" : "SFP_PLUS", "IpAddressAssignment" : "DHCP", "IpAddress" : "192.168.1.231", "Netmask" : "255.255.255.0", "DefaultGateway" : "192.0.2.3", "MacAddress" : "EX:AM:PL:E0:90:12" } ] } }
  • describe-cluster

    用法(已配置 Snowball 客户端)

    snowballEdge describe-cluster

    例 输出

    { "ClusterId" : "CIDEXAMPLE7-5402-4c19-9feb-7c9EXAMPLEd5", "Devices" : [ { "DeviceId" : "JIDEXAMPLE2-bc53-4618-a538-917EXAMPLE94", "UnlockStatus" : { "State" : "UNLOCKED" }, "ActiveNetworkInterface" : { "IpAddress" : "192.0.2.0" }, "ClusterAssociation" : { "State" : "ASSOCIATED", "ClusterId" : "CIDEXAMPLE7-5402-4c19-9feb-7c9EXAMPLEd5" }, "NetworkReachability" : { "State" : "REACHABLE" } }, { "DeviceId" : "JIDEXAMPLE2-bc53-4618-a538-917EXAMPLE94", "UnlockStatus" : { "State" : "UNLOCKED" }, "ActiveNetworkInterface" : { "IpAddress" : "192.0.2.1" }, "ClusterAssociation" : { "State" : "ASSOCIATED", "ClusterId" : "CIDEXAMPLE7-5402-4c19-9feb-7c9EXAMPLEd5" }, "NetworkReachability" : { "State" : "REACHABLE" } }, { "DeviceId" : "JIDEXAMPLE2-bc53-4618-a538-917EXAMPLE94", "UnlockStatus" : { "State" : "UNLOCKED" }, "ActiveNetworkInterface" : { "IpAddress" : "192.0.2.2" }, "ClusterAssociation" : { "State" : "ASSOCIATED", "ClusterId" : "CIDEXAMPLE7-5402-4c19-9feb-7c9EXAMPLEd5" }, "NetworkReachability" : { "State" : "REACHABLE" } }, { "DeviceId" : "JIDEXAMPLE2-bc53-4618-a538-917EXAMPLE94", "UnlockStatus" : { "State" : "UNLOCKED" }, "ActiveNetworkInterface" : { "IpAddress" : "192.0.2.3" }, "ClusterAssociation" : { "State" : "ASSOCIATED", "ClusterId" : "CIDEXAMPLE7-5402-4c19-9feb-7c9EXAMPLEd5" }, "NetworkReachability" : { "State" : "REACHABLE" } }, { "DeviceId" : "JIDEXAMPLE2-bc53-4618-a538-917EXAMPLE94", "UnlockStatus" : { "State" : "UNLOCKED" }, "ActiveNetworkInterface" : { "IpAddress" : "192.0.2.4" }, "ClusterAssociation" : { "State" : "ASSOCIATED", "ClusterId" : "CIDEXAMPLE7-5402-4c19-9feb-7c9EXAMPLEd5" }, "NetworkReachability" : { "State" : "REACHABLE" } } ] }

获取服务状态

可以使用 describe-service 命令确定 Snowball Edge 设备上运行的服务的状态和整体运行状况。可以首先运行 list-services 命令来查看哪些服务正在运行。

  • list-services

    用法(已配置 Snowball 客户端)

    snowballEdge list-services

    例 输出

    { "ServiceIds" : [ “greengrass”, "fileinterface", "s3", "ec2" ] }
  • describe-service

    此命令返回服务的状态值。它还包括状态信息,这些信息有助于解决您使用服务时可能遇到的问题。这些状态如下所示。

    • ACTIVE – 服务正在运行且可供使用。

    • ACTIVATING – 服务正在启动,但是还不能使用。

    • DEACTIVATING – 服务正处于关闭过程中。

    • INACTIVE – 服务未运行,无法使用。

    用法(已配置 Snowball 客户端)

    snowballEdge describe-service --service-id service-id

    例 输出

    { "ServiceId" : "s3", "Status" : { "State" : "ACTIVE" }, "Storage" : { "TotalSpaceBytes" : 99608745492480, "FreeSpaceBytes" : 99608744468480 }, "Endpoints" : [ { "Protocol" : "http", "Port" : 8080, "Host" : "192.0.2.0" }, { "Protocol" : "https", "Port" : 8443, "Host" : "192.0.2.0", "CertificateAssociation" : { "CertificateArn" : "arn:aws:snowball-device:::certificate/6d955EXAMPLEdb71798146EXAMPLE3f0" } } ] }

从集群中删除节点

disassociate-device 命令从 Snowball Edge 集群中删除节点。如果要替换运行状况不佳的节点,请使用此命令。有关集群的更多信息,请参阅使用 AWS Snowball Edge 集群

重要

仅在您要删除运行状况不佳的节点时才应使用 disassociate-device 命令。如果您尝试删除正常节点,此命令将失败并返回错误。

如果节点意外关闭或断开网络连接,从而临时对集群的其余部分不可用,不要使用此命令删除该节点。使用此命令删除的节点无法添加到任何集群中,必须寄回 AWS。

如果节点意外关闭电源或断开网络连接,只需将节点重新通电并连接到网络,然后使用 associate-device 命令。您不能使用 disassociate-device 命令来取消关联已启动并正常运行的节点。

用法(已配置 Snowball 客户端)

snowballEdge disassociate-device --device-id Job ID for the Device

例 输出

Disassociating your Snowball Edge device from the cluster. Your Snowball Edge device will be disassociated from the cluster when it is in the "DISASSOCIATED" state. You can use the describe-cluster command to determine the state of your cluster.

向集群添加节点

associate-device 命令将节点添加到 Snowball Edge 设备的集群。如果您关闭了一个节点,则它会从解锁状态恢复为锁定状态。要解锁该节点,您可以使用此命令。您可以使用此命令将不可用节点替换为您订购作为替换的新节点。有关集群的更多信息,请参阅使用 AWS Snowball Edge 集群

用法(已配置 Snowball 客户端)

snowballEdge associate-device --device-ip-address IP Address

例 输出

Associating your Snowball Edge device with the cluster. Your Snowball Edge device will be associated with the cluster when it is in the ASSOCIATED state. You can use the describe-cluster command to determine the state of your cluster.