本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Job 管理API参考
的作业管理API Amazon Snowball 是基于 HTTP (RFC2616) 的网络协议。有关这方面的更多信息RFC,请参阅IETF网站上的 HTTP(RFC2616)
注意
API在美国地区拨打的发布职位或描述地址的电话会返回该账户在美国境内的所有职位或地址。
Snowball 的工作管理API就是一个典范。RPC在该模型中具有一套固定的操作,客户端已知每个操作的语法,而无需事先进行任何交互。接下来,您可以使用抽象RPC符号找到每个API操作的描述,其操作名称未出现在网络上。对于每个操作,主题都指定了HTTP请求元素的映射。
给定请求映射到的特定任务管理操作由请求的方法(GET、PUTPOST、或DELETE)及其请求URI匹配的各种模式的组合决定。如果操作为PUT或POST,则 Snowball 会从请求URI路径段、查询参数和请求正文中的JSON对象中提取调用参数。
尽管操作名称(例如)没有出现在网络上CreateJob
,但这些操作名称在 Amazon Identity and Access Management (IAM) 策略中是有意义的。操作名称还用于命名命令行工具中的命令和的元素。 Amazon SDK APIs例如, 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 Edge 客户端解锁设备。有关更多信息,请参阅 Amazon Snowball 开发人员指南中的使用 Snowball 客户端。
API端点
终API端节点是域名服务 (DNS) 名称,在中用作API呼叫的主机。HTTP URI这些API端点是特定于区域的,采用以下形式。
snowball.
aws-region
.amazonaws.com
例如,美国西部(俄勒冈)区域的 Snowball API 终端节点如下所示。
snowball.us-west-2.amazonaws.com
有关 Snowball 支持的列表(您可以在其中创建和管理作业),请参阅Amazon Import/Export中的。 Amazon Web Services 区域 Amazon Web Services 一般参考
特定于区域的API终端节点定义了您拨打电话时可访问的 Snowball 资源的范围。API例如,当您使用上述端点调用 ListJobs
操作时,您将获得在您账户中创建的位于美国西部(俄勒冈州)区域的作业列表。
API版本
用于呼叫的API版本由请求的第一个路径段标识URI,其形式为 ISO 8601 日期。该文档描述了 2016-06-30 API 版本。
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
,请参阅NotPrincipal《IAM用户指南》。
注意
对于中的作业 Amazon GovCloud (US),Snowball 使用代入角色的角色会话名称AWSIEJob
作为角色会话名称。
为 Snowball 和 Snowball Edge 创建IAM角色
必须为您的 Amazon S3 存储桶创建具有读写权限的IAM角色策略。该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/
。 -
请选择创建作业。
-
在第一步中,在 Amazon S3 中填写导入作业的详细信息,然后选择下一步。
-
在第二步中,在 “权限” 下,选择 “创建/选择角色” IAM。
IAM管理控制台打开,显示 Amazon 用于将对象复制到您指定的 Amazon S3 存储桶中的IAM角色。
-
检查此页上的详细信息,然后选择允许。
您将返回到 Amazon Snow 系列管理控制台,其中所选IAM角色ARN包含您刚刚创建的IAM角色的 Amazon 资源名称 (ARN)。
-
选择 “下一步” 完成IAM角色的创建。
上述过程创建了一个IAM角色,该角色对您计划将数据导入到的 Amazon S3 存储桶拥有写入权限。创建的IAM角色具有以下结构之一,具体取决于它是针对导入任务还是导出任务。
IAM导入 Job 的角色
{ "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导出 Job 的角色
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetBucketPolicy", "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::*" } ] }
如果您使用带有 Amazon KMS托管密钥的服务器端加密来加密与导出任务关联的 Amazon S3 存储桶,则还需要向您的角色添加以下语句。IAM
{ "Effect": "Allow", "Action": [ “kms:Decrypt” ], "Resource": "arn:aws:s3:::
SSEKMSEncryptedBucketName
" }