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

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

使用 Amazon EC2 终端节点

在接下来的内容中,您将大体了解 Amazon Elastic Compute Cloud (Amazon EC2) 终端节点。借助此终端节点,您可以通过编程方式,使用 Amazon EC2 API 操作管理您的 Amazon 系统映像 (AMI) 和计算实例。

将 Amazon EC2 终端节点指定为 AWS CLI 终端节点

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

HTTPS 安全终端节点

aws ec2 describe-instances --endpoint https://192.0.2.0:8243 --ca-bundle path/to/certificate

HTTP 不安全终端节点

>aws ec2 describe-instances --endpoint http://192.0.2.0:8008

如果您使用 HTTPS 终端节点 8243,传输中的数据将加密。使用 Snowball Edge 在解锁时所生成的证书来确保此加密。在您具有证书后,可以将其保存到本地 ca-bundle.pem 文件。然后,可以将 AWS CLI 配置文件配置为包含您的证书的路径,如下所述。

将您的证书与 Amazon EC2 终端节点相关联

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

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

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

  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 命令。

Snowball Edge 不支持的 Amazon EC2 功能

使用 Amazon EC2 终端节点,您可以使用 Amazon EC2 API 操作以编程方式在 Snowball Edge 上管理 AMI 和计算实例。但是,并非所有功能和 API 操作均支持用于 Snowball Edge 设备。

不支持本指南中未明确列出为支持的任何功能或操作。例如,以下 Amazon EC2 操作不支持用于 Snowball Edge:

Snowball Edge 上支持用于 Amazon EC2 的 AWS CLI 命令

在下文中,您将了解有关如何为适用的 AWS CLI 命令指定 Amazon EC2 终端节点的信息。有关安装和设置 AWS CLI 的信息(包括指定要为其执行 AWS CLI 调用的区域),请参阅 AWS Command Line Interface 用户指南

Snowball Edge 上支持的 Amazon EC2 AWS CLI 命令的列表

接下来,您可以找到 Snowball Edge 设备上支持的一部分适用于 Amazon EC2 的 AWS CLI 命令和选项的描述。如果某个命令或选项未在下方列出,则表明它不受支持。您可以声明一些不受支持的选项以及一个命令。但是,这些都会被忽略。

  • associate-address – 将虚拟 IP 地址与实例关联,以用于设备上的三个物理网络接口之一:

    • --instance-id – 单个 sbe 实例的 ID。

    • --public-ip – 要用于访问您的实例的虚拟 IP 地址。

  • attach-volume – 将 EBS 卷附加到设备上一个已停止的实例,然后将其公开给具有指定设备名称的实例。不支持将卷附加到正在运行的 Amazon EC2 实例。

    • --device value – 设备名称。

    • --instance-id – 目标 Amazon EC2 实例的 ID。

    • --volume-id value – EBS 卷的 ID。

  • authorize-security-group-egress – 向安全组添加一个或多个用于 Snowball Edge 设备的传出规则。具体来说,此操作允许实例将流量发送到一个或多个目标 IPv4 CIDR 地址范围。有关更多信息,请参阅Snowball Edge 设备中的安全组

    • --group-id value – 安全组的 ID。

    • [--ip-permissions value] – 一个或多个 IP 权限集。

  • authorize-security-group-ingress – 将一个或多个传入规则添加到安全组。当调用 authorize-security-group-ingress 时,您必须为 group-namegroup-id 指定一个值。

    • [--group-name value] – 安全组的名称。

    • [--group-id value] – 安全组的 ID

    • [--ip-permissions value] – 一个或多个 IP 权限集。

    • [--protocol value] IP 协议。可能的值为 tcpudpicmp--port 参数是必填项,除非“所有协议”值指定为 (-1)。

    • [--port value] – 对于 TCP 或 UDP,允许的端口范围。此值可以是单个整数或范围(最小值–最大值)。

      对于 ICMP,为单个整数或范围 (type-code),其中,type 表示 ICMP 类型编号,code 表示 ICMP 代码编号。值为 -1 表示所有 ICMP 类型的所有 ICMP 代码。仅 type 的值为 -1 表示指定 ICMP 类型的所有 ICMP 代码。

    • [--cidr value] – CIDR IP 范围。

  • create-launch-template – 创建启动模板。启动模板包含用于启动实例的参数。当您使用 RunInstances 启动实例时,您可以指定启动模板,而不是在请求中提供启动参数。您最多可以为每个 设备 创建 100 个模板。

    • --launch-template-name string – 启动模板的名称。

    • --launch-template-data structure – 启动模板的信息。支持以下属性:

      • ImageId

      • InstanceType

      • SecurityGroupIds

      • TagSpecifications

      • UserData

      JSON 语法:

      '{ "ImageId":"string", "InstanceType":"sbe-c.large", "SecurityGroupIds":["string", ...], "TagSpecifications":[{"ResourceType":"instance","Tags":[{"Key":"Name","Value":"Test"}, {"Key":"Stack","Value":"Gamma"}]}], "UserData":"this is my user data" }'
    • [--version-description string] – 第一版启动模板的说明。

    • --endpoint snowballEndpoint – 一个值,使您可以使用 Amazon EC2 API 操作以编程方式管理计算实例。有关更多信息,请参阅 将 Amazon EC2 终端节点指定为 AWS CLI 终端节点

  • create-launch-template-version – 为启动模板创建新的版本。您可以指定启动模板的一个现有版本作为新版本的基础。启动模板版本是按创建顺序编号的。您无法指定、更改或替换启动模板版本的编号。您可以为每个启动模板创建多达 100 个版本。

    在请求中指定启动模板 ID 或启动模板名称。

    • --launch-template-id string – 启动模板的 ID。

    • --launch-template-name string – 启动模板的名称。

    • --launch-template-data structure – 启动模板的信息。支持以下属性:

      • ImageId

      • InstanceType

      • SecurityGroupIds

      • TagSpecifications

      • UserData

      JSON 语法:

      '{ "ImageId":"string", "InstanceType":"sbe-c.large", "SecurityGroupIds":["string", ...], "TagSpecifications":[{"ResourceType":"instance","Tags":[{"Key":"Name","Value":"Test"}, {"Key":"Stack","Value":"Gamma"}]}], "UserData":"this is my user data" }'
    • [--source-version string] – 作为新版本基础的启动模板的版本号。新版本继承和源版本相同的启动参数,但在 launch-template-data 中指定的参数除外。

    • [--version-description string] – 第一版启动模板的说明。

    • --endpoint snowballEndpoint – 一个值,使您可以使用 Amazon EC2 API 操作以编程方式管理计算实例。有关更多信息,请参阅 将 Amazon EC2 终端节点指定为 AWS CLI 终端节点

  • create-tags – 添加或覆盖指定资源的一个或多个标签。每个资源最多可以有 50 个标签。每个标签由一个键和一个可选值组成。资源的标签键必须是唯一的。支持以下资源:

    • AMI

    • 实例

    • 启动模板

    • 安全组

  • create-security-group – 在您的 Snowball Edge 上创建安全组。您最多可以创建 50 个安全组。创建安全组时,您可以指定选择的友好名称:

    • --group-name value – 安全组的名称。

    • --description value – 安全组的描述。此仅为信息性。此值最长可达 255 个字符。

  • create-volume – 创建一个 EBS 卷,您可以将此卷连接到设备上的实例。

    • [--size value] – 以 GiB 为单位的卷大小,可以是 1 GiB 到 1 TB (1000 GiB)。

    • [--snapshot-id value] – 从中创建卷的快照。

    • [--volume-type value] – 卷类型。如果未指定值,则默认值为 sbg1。可能的值包括:

      • 对于磁性介质卷为 sbg1

      • 对于 SSD 卷为 sbp1

    • [--tag-specification value – 在创建期间应用到卷的标签列表。

  • delete-launch-template – 删除启动模板。如果删除启动模板,则会删除该模板的所有版本。

    在请求中指定启动模板 ID 或启动模板名称。

    • --launch-template-id string – 启动模板的 ID。

    • --launch-template-name string – 启动模板的名称。

    • --endpoint snowballEndpoint – 一个值,使您可以使用 Amazon EC2 API 操作以编程方式管理计算实例。有关更多信息,请参阅 将 Amazon EC2 终端节点指定为 AWS CLI 终端节点

  • delete-launch-template-version – 删除启动模板的一个或多个版本。您无法删除启动模板的默认版本;您必须先分配一个不同的版本以作为默认版本。如果默认版本是唯一启动模板的版本,请使用 delete-launch-template 命令删除整个启动模板版本。

    在请求中指定启动模板 ID 或启动模板名称。

    • --launch-template-id string – 启动模板的 ID。

    • --launch-template-name string – 启动模板的名称。

    • --versions (list) "string" "string" – 要删除的一个或多个启动模板版本的版本号。

    • --endpoint snowballEndpoint – 一个值,使您可以使用 Amazon EC2 API 操作以编程方式管理计算实例。有关更多信息,请参阅 将 Amazon EC2 终端节点指定为 AWS CLI 终端节点

  • delete-security-group – 删除安全组。

    如果您尝试删除与实例关联的安全组或由另一个安全组引用的安全组,则操作将失败,并显示 DependencyViolation

    • --group-name value – 安全组的名称。

    • --description value – 安全组的描述。此仅为信息性。此值最长可达 255 个字符。

  • delete-tags – 从指定资源(AMI、计算实例、启动模板或安全组)中删除一组指定的标签。

  • delete-volume – 删除指定的 EBS 卷。该卷必须处于 available 状态(未附加到实例)。

    • --volume-id value – 卷的 ID。

  • describe-addresses – 描述与您设备上相同数量的 sbe 实例关联的一个或多个虚拟 IP 地址。

    • --public-ips – 与您的实例关联的一个或多个虚拟 IP 地址。

  • describe-images – 描述可供您使用的一个或多个映像 (AMI)。在创建任务期间,可供您使用的映像会添加到 Snowball Edge 设备上。

    • --image-id – AMI 的 Snowball AMI ID。

  • describe-instance-attribute – 描述指定实例的指定属性。一次只能指定一个属性。支持以下属性:

    • instanceInitiatedShutdownBehavior

    • instanceType

    • userData

  • describe-instances – 描述一个或多个实例。该响应会返回分配给该实例的任何安全组。

    • --instance-ids – 设备上停止的一个或多个 sbe 实例的 ID。

    • --page-size – 调用中获取的每个页面的大小。此值不会影响命令的输出中返回的项目数。设置较小的页面大小会导致对设备进行更多调用,每次调用检索的项目数较少。这样做有助于防止调用超时。

    • --max-items – 命令的输出中要返回的项目总数。如果可用的总项目数超过指定的值,则命令的输出中会提供 NextToken。要恢复分页,请在后续命令的 starting-token 参数中提供 NextToken 值。

    • --starting-token – 指定从何处开始分页的令牌。此令牌是先前截断的响应中的 NextToken 值。

  • describe-launch-templates – 描述一个或多个启动模板。describe-launch-templates 命令是一个分页操作。您可以进行多个调用以检索结果的整个数据集。

    您必须在请求中指定启动模板 ID 或启动模板名称。

    • --launch-template-ids (list) "string" "string" – 启动模板的 ID 列表。

    • --launch-template-names (list) "string" "string" – 启动模板的名称列表。

    • --page-size – 调用中获取的每个页面的大小。此值不会影响命令的输出中返回的项目数。设置较小的页面大小会导致对设备进行更多调用,每次调用检索的项目数较少。这样做有助于防止调用超时。

    • --max-items – 命令的输出中要返回的项目总数。如果可用的总项目数超过指定的值,则命令的输出中会提供 NextToken。要恢复分页,请在后续命令的 starting-token 参数中提供 NextToken 值。

    • --starting-token – 指定从何处开始分页的令牌。此令牌是先前截断的响应中的 NextToken 值。

    • --endpoint snowballEndpoint – 一个值,使您可以使用 Amazon EC2 API 操作以编程方式管理计算实例。有关更多信息,请参阅 将 Amazon EC2 终端节点指定为 AWS CLI 终端节点

  • describe-launch-template-versions – 描述指定启动模板的一个或多个版本。您可以描述所有版本、单个版本或一系列版本。describe-launch-template-versions 命令是一个分页操作。您可以进行多个调用以检索结果的整个数据集。

    您必须在请求中指定启动模板 ID 或启动模板名称。

    • --launch-template-id string – 启动模板的 ID。

    • --launch-template-name string – 启动模板的名称。

    • [--versions (list) "string" "string"] – 要删除的一个或多个启动模板版本的版本号。

    • [--min-version string] – 用于描述启动模板版本的最小版本号。

    • [--max-version string] – 用于描述启动模板版本的最大版本号。

    • --page-size – 调用中获取的每个页面的大小。此值不会影响命令的输出中返回的项目数。设置较小的页面大小会导致对设备进行更多调用,每次调用检索的项目数较少。这样做有助于防止调用超时。

    • --max-items – 命令的输出中要返回的项目总数。如果可用的总项目数超过指定的值,则命令的输出中会提供 NextToken。要恢复分页,请在后续命令的 starting-token 参数中提供 NextToken 值。

    • --starting-token – 指定从何处开始分页的令牌。此令牌是先前截断的响应中的 NextToken 值。

    • --endpoint snowballEndpoint – 一个值,使您可以使用 Amazon EC2 API 操作以编程方式管理计算实例。有关更多信息,请参阅 将 Amazon EC2 终端节点指定为 AWS CLI 终端节点

  • describe-security-groups – 描述一个或多个安全组。

    describe-security-groups 命令是一个分页操作。您可以发出多个 API 调用以检索结果的整个数据集。

    • [--group-name value] – 安全组的名称。

    • [--group-id value] – 安全组的 ID。

    • [--page-size value] – AWS 服务调用中获取的每个页面的大小。此大小不会影响命令的输出中返回的项目数。设置较小的页面大小会导致对 AWS 服务进行更多调用,每次调用检索的项目数较少。这种方法有助于防止 AWS 服务调用超时。有关用法示例,请参阅 AWS Command Line Interface 用户指南 中的分页

    • [--max-items value] – 命令的输出中要返回的项目总数。如果可用的总项目数超过指定的值,则命令的输出中会提供 NextToken。要恢复分页,请在后续命令的 starting-token 参数中提供 NextToken 值。请勿在 AWS CLI 之外直接使用 NextToken 响应元素。有关用法示例,请参阅 AWS Command Line Interface 用户指南 中的分页

    • [--starting-token value] – 指定从何处开始分页的令牌。此令牌是先前截断的响应中的 NextToken 值。有关用法示例,请参阅 AWS Command Line Interface 用户指南 中的分页

  • describe-tags – 描述用于指定资源(imageinstance 或安全组)的一个或多个标签。使用此命令时,支持以下筛选条件:

    • launch-template

    • resource-id

    • resource-type – imageinstance

    • key

    • value

  • describe-volumes – 描述指定的 EBS 卷。

    • [--max-items value] – 命令的输出中要返回的项目总数。如果可用的总项目数超过指定的值,则命令的输出中会提供 NextToken。要恢复分页,请在后续命令的 starting-token 参数中提供 NextToken 值。

    • [--starting-token value] – 指定从何处开始分页的令牌。此令牌是先前截断的响应中的 NextToken 值。

    • [--volume-ids value] – 一个或多个卷 ID。

  • detach-volume – 从实例中分离 EBS 卷。不支持分离附加到正在运行的 Amazon EC2 实例的卷。

    • [--device value] – 设备名称。

    • [-instance-id] – 目标 Amazon EC2 实例的 ID。

    • --volume-id value – 卷的 ID。

  • disassociate-address – 取消虚拟 IP 地址与所关联实例的关联。

    • --public-ip – 您要与实例取消关联的虚拟 IP 地址。

  • get-launch-template-data – 检索指定实例的配置数据。您可以使用此数据来创建启动模板。

  • modify-launch-template – 修改启动模板。您可以指定要设置为默认版本的启动模板版本。在未指定启动模板版本的情况下启动实例时,将会应用启动模板的默认版本。

    在请求中指定启动模板 ID 或启动模板名称。

    • --launch-template-id string – 启动模板的 ID。

    • --launch-template-name string – 启动模板的名称。

    • --default-version string – 设置为默认版本的启动模板版本号。

    • --endpoint snowballEndpoint – 一个值,使您可以使用 Amazon EC2 API 操作以编程方式管理计算实例。有关更多信息,请参阅 将 Amazon EC2 终端节点指定为 AWS CLI 终端节点

  • modify-instance-attribute – 修改指定实例的属性。支持以下属性:

    • instanceInitiatedShutdownBehavior

    • userData

  • revoke-security-group-egress – 从安全组删除一个或多个传出规则:

    • [--group-id value] – 安全组的 ID

    • [--ip-permissions value] – 一个或多个 IP 权限集。

  • revoke-security-group-ingress – 撤消安全组的一个或多个传入规则。当调用 revoke-security-group-ingress 时,您必须为 group-namegroup-id 指定一个值。

    • [--group-name value] – 安全组的名称。

    • [--group-id value] – 安全组的 ID。

    • [--ip-permissions value] – 一个或多个 IP 权限集。

    • [--protocol value] IP 协议。可能的值为 tcpudpicmp--port 参数是必填项,除非“所有协议”值指定为 (-1)。

    • [--port value] – 对于 TCP 或 UDP,允许的端口范围。单个整数或范围(最小值–最大值)。

      对于 ICMP,为单个整数或范围 (type-code),其中,type 表示 ICMP 类型编号,code 表示 ICMP 代码编号。值为 -1 表示所有 ICMP 类型的所有 ICMP 代码。仅 type 的值为 -1 表示指定 ICMP 类型的所有 ICMP 代码。

    • [--cidr value] – CIDR IP 范围。

  • run-instances – 通过将 Snowball AMI ID 用于 AMI,启动多个计算实例。

    注意

    在 Snowball Edge 上启动计算实例最多需要 1.5 小时,具体取决于实例的大小和类型。

    • [--block-device-mappings (list)] – 块储存设备映射条目。支持 DeleteOnTerminationVolumeSizeVolumeType 参数。启动卷必须为类型 sbg1

      此命令的 JSON 语法如下所示。

      { "DeviceName": "/dev/sdh", "Ebs": { "DeleteOnTermination": true|false, "VolumeSize": 100, "VolumeType": "sbp1"|"sbg1" } }
    • --count – 要启动的实例数量。如果提供单个数字,则它被视为要启动的最小实例数量(默认为 1)。如果以 min:max 形式提供范围,则第一个数字解释为要启动的最小实例数量,第二个数字解释为要启动的最大实例数量。

    • --image-id – AMI 的 Snowball AMI ID,可以通过调用 describe-images 获得。启动实例时需要 AMI。

    • --instance-initiated-shutdown-behavior – 默认情况下,当您从实例启动关闭(使用 shutdown 或 poweroff 命令),实例将会停止。您可以更改此行为,以便使其终止。支持 stopterminate 参数。默认为 stop

    • --instance-type – sbe 实例类型。

    • --launch-template structure – 设置为默认版本的启动模板的版本号。您在 run-instances 命令中指定的任何参数都会覆盖启动模板中的相同参数。您可以指定启动模板的名称或 ID,但不能同时指定二者。

      { "LaunchTemplateId": "string", "LaunchTemplateName": "string", "Version": "string" }
    • --security-group-ids – 一个或多个安全组 ID。您可以使用 CreateSecurityGroup 创建安全组。如果未提供任何值,则会将默认安全组的 ID 分配给创建的实例。

    • --tag-specifications – 要在启动期间应用于资源的标签。只能在启动时标记实例。指定的标签将应用于在启动期间创建的所有实例。要在创建之后标记资源,请使用 create-tags

    • --user-data – 提供给实例的用户数据。如果使用的是 AWS CLI,系统将执行 base64 编码,您可以从文件中加载文本。否则,您必须提供 base64 编码文本。

  • start-instances – 启动您先前停止的 sbe 实例。附加到实例的所有资源从启动到停止期间一直持续存在,但在实例终止时会被擦除。

    • --instance-ids – 设备上停止的一个或多个 sbe 实例的 ID。

  • stop-instances – 停止正在运行的 sbe 实例。附加到实例的所有资源从启动到停止期间一直持续存在,但在实例终止时会被擦除。

    注意

    从操作系统内关闭实例(例如,使用 shutdownreboot 命令)具有和调用 terminate-instances 命令相同的效果。

    • --instance-ids – 设备上要停止的一个或多个 sbe 实例的 ID。

  • terminate-instances – 关闭一个或多个实例。此操作是幂等的;如果您多次终止某个实例,每个调用都成功。附加到实例的所有资源从启动到停止期间一直持续存在,但在实例终止时数据会被擦除。

    • --instance-ids – 设备上将终止的一个或多个 sbe 实例的 ID。为这些实例存储的所有关联数据都将丢失。

支持的 Amazon EC2 API 操作

在下文中,可以在 Amazon EC2 API Reference 中找到可用于 Snowball Edge 的 Amazon EC2 API 操作以及指向其说明的链接。Amazon EC2 API 调用需要签名版本 4 (SigV4) 签名。如果您使用 AWS CLI 或 AWS 开发工具包进行这些 API 调用,则会为您处理 SigV4 签名。否则,您需要实施自己的 SigV4 签名解决方案。有关更多信息,请参阅获取并使用本地 Amazon S3 凭证