任务管理 API 参考 - Amazon Snowball
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

任务管理 API 参考

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

注意

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

Snowball 的任务管理 API 是一个 RPC 模型。在该模型中具有一套固定的操作,客户端已知每个操作的语法,而无需事先进行任何交互。在下文中,您可以使用一个抽象 RPC 表示找出各个 API 操作的说明以及不会在线显示的操作名称。对于每个操作,该主题指定了指向 HTTP 请求要素的映射。

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

尽管操作名称(例如)未出现在网络上CreateJob,但这些操作名称在Amazon Identity and Access Management (IAM) 策略中是有意义的。操作名称还用于命名命令行工具中的命令和Amazon SDK API 的元素。例如,Amazon Command Line Interface (Amazon CLI) 命令 create-job 会映射到 CreateJob 操作。操作名称还出现在 Snowball API 调用的CloudTrail日志中。

有关安装和设置的信息Amazon CLI,包括指定要对哪些区域进行Amazon CLI呼叫,请参阅Amazon Command Line Interface用户指南

注意

任务管理 API 为 Snowball 管理控制台中提供的相同功能提供了编程接口,即为Amazon Snowball 创建和管理 Snowball 作业。要使用 Snowball 设备在本地传输数据,请使用 Snowball 客户端或适用于 Snowball 的 S3 SDK 适配器。有关更多信息,请参阅《Snowball 用户指南》中的 “使用Amazon Snowball 传输数据”。

如果您使用 Snowball Edge,请使用 Snowball 客户端解锁设备。有关更多信息,请参阅《Snowball 开发者指南》中的 “使用Amazon Snowball 客户端”。

API 终端节点

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

snowball.aws-region.amazonaws.com

例如,美国西部(俄勒冈州)区域的 Snows Ball API 端点如下。

snowball.us-west-2.amazonaws.com

有关 Snowball 支持Amazon Web Services 区域的列表(您可以在其中创建和管理任务),请参阅Amazon Import/Export中的Amazon Web Services 一般参考

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

API 版本

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

API 权限策略参考

使用适用于 Snowball 的任务管理 API 创建任务需要以下策略。

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

使用任务管理 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,请参阅 I NotPrincipalAM 用户指南

注意

对于中的任务Amazon GovCloud (US),Snowball 使用AWSIEJob代入角色的角色会话名称作为角色会话名称。

为Snowball 和Snowball 边缘创建 IAM 角色

必须创建 IAM 角色策略,对您的 Amazon S3 存储桶具有读取和写入权限。IAM 角色还必须与 Snowball 具有信任关系。建立信任关系意味着Amazon可以将数据写入 Snowball 和 Amazon S3 存储桶,具体取决于您是导入还是导出数据。

当您在中创建任务时Amazon Snow 系列管理控制台,将在权限部分的步骤 4 中创建必要的 IAM 角色。此过程是自动的。您允许 Snowball 代入的 IAM 角色仅用于在装有您传输数据的 Snowball 到达时将您的数据写入存储桶Amazon。此流程包括下列步骤。

为导入任务创建 IAM 角色
  1. 登录Amazon Web Services Management Console并打开Amazon Snowball主机,网址为 https://console.aws.amazon.com/importexport/

  2. 请选择 Create job (创建任务)

  3. 在第一步中,填写将任务导入 Amazon S3 的详细信息,然后选择 “下一步”。

  4. 在第二步中,在 Permission 下选择 Create/Select IAM Role

    IAM 管理控制台打开,显示Amazon用于将对象复制到您指定的 Amazon S3 存储桶的 IAM 角色。

  5. 检查此页上的详细信息,然后选择允许

    您将返回到 Amazon Snow 系列管理控制台,其中 Selected IAM role ARN (选择的 IAM 角色 ARN) 包含您刚刚创建的 IAM 角色的 Amazon 资源名称 (ARN)。

  6. 选择 “下一步” 完成您的 IAM 角色的创建。

上述过程创建了一个 IAM 角色,该角色对您计划将数据导入的 Amazon S3 存储桶具有写入权限。创建的 IAM 角色具有以下结构之一,具体取决于它是用于导入任务还是用于导出任务。

用于导入任务的 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:::*" } ] }

如果您使用带有Amazon KMS托管密钥的服务器端加密 (SSE-KMS) 来加密与导入任务关联的 Amazon S3 存储桶,则还需要向您的 IAM 角色添加以下语句。

{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:s3:::SSEKMSEncryptedBucketName" }

用于导出任务的 IAM 角色

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

如果您使用带有Amazon KMS —managed 密钥的服务器端加密来加密与导出任务关联的 Amazon S3 存储桶,则还需要在您的 IAM 角色中添加以下语句。

{ "Effect": "Allow", "Action": [ “kms:Decrypt” ], "Resource": "arn:aws:s3:::SSEKMSEncryptedBucketName" }