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

AWS Snowball 的任务管理 API 参考

适用于 AWS Snowball 的任务管理 API 是基于 HTTP (RFC 2616) 的网络协议。有关此 RFC 的更多信息,请参阅 IETF 网站上的 HTTP (RFC 2616)。对于任务管理 API 的每次调用,您需要向针对要从中管理任务的 AWS 区域的区域特定任务管理 API 终端节点发送 HTTP 请求。API 会对 HTTP 请求/响应正文使用 JSON (RFC 4627) 文档。

注意

在美国区域进行的用于列出工作或描述地址的 API 调用将分别返回该账户在美国境内的所有任务或地址。

适用于 Snowball 的任务管理 API 是一种 RPC 模型,其中有一组固定操作,并且各操作的语法在未进行任何交互的情况下就能被客户端识别。在下文中,您可以使用一个抽象 RPC 表示找出各个 API 操作的说明以及不会在线显示的操作名称。对于每个操作,该主题指定了指向 HTTP 请求要素的映射。

某个给定请求所映射到的特定任务管理操作由请求方法 (GET、PUT、POST 或 DELETE) 以及与其请求-URI 匹配的模式共同确定。如果操作为 PUT 或 POST,则 Snowball 将从请求 URI 路径分段、查询参数和请求正文内的 JSON 对象中提取调用参数。

尽管操作名称(如 CreateJob)不会在线显示,但这些操作名称在 AWS Identity and Access Management (IAM) 策略中具有重要意义。操作名称还可用于为命令行工具中的命令和 AWS SDK API 的元素命名。例如,AWS Command Line Interface (AWS CLI) 命令 create-job 会映射到 CreateJob 操作。操作名称还会显示在 Snowball API 调用的 CloudTrail 日志中。

有关安装和设置 AWS CLI 的信息(包括指定要为其执行 AWS CLI 调用的区域),请参阅 AWS Command Line Interface 用户指南

注意

借助任务管理 API,您能以编程方式访问 AWS Snowball 管理控制台 中的相同功能,即为 Snowball 创建和管理任务。要真正地使用 Snowball 设备在本地传输数据,您还需使用 Snowball 客户端或 适用于 Snowball 的 Amazon S3 Adapter。有关更多信息,请参阅使用 Snowball 传输数据

API 终端节点

API 终端节点是指在 API 调用的 HTTP URI 中用作主机的域名服务 (DNS) 名称。这些 API 终端节点是特定于区域的,并采用以下形式。

snowball.aws-region.amazonaws.com

例如,美国西部(俄勒冈)区域的 Snowball API 终端节点如下所示。

snowball.us-west-2.amazonaws.com

有关 Snowball 支持的 AWS 区域(可在其中创建和管理任务)的列表,请参阅 AWS General Reference 中的 AWS Import/Export

特定于区域的 API 终端节点会定义您在执行 API 调用时可以访问的 Snowball 资源范围。例如,当您使用上述终端节点调用 ListJobs 操作时,您将获得在您账户中创建的位于美国西部(俄勒冈)区域的任务列表。

API 版本

用于调用的 API 的版本由请求 URI 的第一个路径分段确定,且采用 ISO 8601 日期的格式。本文档中所描述的版本为 API 版本 2016-06-30。

API 权限策略参考

使用任务管理 API 为 Snowball 创建任务时,需要使用以下策略。

用于创建任务的角色信任策略

使用作业管理 API 创建任务时,需要使用以下信任策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "importexport.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "AWSIE" } } } ] }

注意

要了解有关信任策略的更多信息,请参阅 IAM 用户指南 中的修改角色

用于创建导入任务的角色策略

创建导入任务时,需要使用以下角色策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "s3:GetBucketPolicy", "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "snowball:*" ], "Resource": [ "*" ] } ] }

用于创建导出任务的角色策略

创建导出任务时,需要使用以下角色策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "snowball:*" ], "Resource": [ "*" ] } ] }

用于创建任务的 Amazon S3 存储桶策略委托人

如果与 Snowball 结合使用的 Amazon S3 存储桶所采用的存储桶策略要求列出所担任角色的角色会话名称,则您需要在标识出 AWSImportExport-Validation 的策略中指定一位委托人。以下示例 Amazon S3 存储桶策略展示了如何执行此操作。

{ "Version": "2012-10-17", "Statement": { "Sid": "Allow AWS Snowball To Create Jobs", "Effect": "Deny", "NotPrincipal": { "AWS": [ "arn:aws:iam::111122223333:role/rolename", "arn:aws:sts::111122223333:assumed-role/rolename/AWSImportExport-Validation", "arn:aws:iam::111122223333:root" ] }, "Action": "S3:*", "Resource": ["arn:aws:s3:::examplebucket/*"] } }

在此示例策略中,我们拒绝了除 NotPrincipal 元素中指定的委托人之外的所有委托人的访问。有关如何使用 NotPrincipal 的更多信息,请参阅 IAM 用户指南 中的 NotPrincipal