本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
任务管理 API 参考
适用于 Amazon Snowball 的任务管理 API 是基于 HTTP (RFC 2616) 的网络协议。有关此 RFC 的更多信息,请参阅 IETF 网站上的 HTTP (RFC 2616)
注意
在美国区域进行的用于列出工作或描述地址的 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 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 角色
-
登录Amazon Web Services Management Console并打开Amazon Snowball主机,网址为 https://console.aws.amazon.com/importexport/
。 -
请选择 Create job (创建任务)。
-
在第一步中,填写将任务导入 Amazon S3 的详细信息,然后选择 “下一步”。
-
在第二步中,在 Permission 下选择 Create/Select IAM Role。
IAM 管理控制台打开,显示Amazon用于将对象复制到您指定的 Amazon S3 存储桶的 IAM 角色。
-
检查此页上的详细信息,然后选择允许。
您将返回到 Amazon Snow 系列管理控制台,其中 Selected IAM role ARN (选择的 IAM 角色 ARN) 包含您刚刚创建的 IAM 角色的 Amazon 资源名称 (ARN)。
-
选择 “下一步” 完成您的 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
" }