

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

# 作业管理 API 参考
<a name="api-reference"></a>

的任务管理 API AWS Snowball Edge 是一种基于 HTTP 的网络协议 (RFC 2616)。有关此 RFC 的更多信息，请参阅 IETF 网站上的 [HTTP (RFC 2616)](https://www.ietf.org/rfc/rfc2616.txt)。对于作业管理 API 的每次调用，您需要向要管理作业的 AWS 区域 的区域特定作业管理 API 端点发送 HTTP 请求。API 使用 JSON (RFC 4627) 文档作为 HTTP request/response 正文。

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

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

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

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

有关安装和设置的信息 AWS CLI，包括指定要 AWS CLI 拨打的区域，请参阅《[AWS Command Line Interface 用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

**注意**  
任务管理 API 提供了与 Snowball 管理[控制台中相同的功能的编程接口，即为AWS Snowball Edge 创建和管理](https://console.aws.amazon.com/importexport/home?region=us-west-2) Snowball Edge 的作业。要使用 Snowball 设备在本地传输数据，请使用适用于 Snowball Edge 的 Snowball Edge 客户端或适用于 Snowball Edge 的 S3 SDK 适配器。有关更多信息，请参阅 *AWS Snowball 用户指南*中的[使用 Snowball 传输数据](https://docs.aws.amazon.com/snowball/latest/ug/snowball-data-transfer.html)。  
如果你使用 Snowball Edge，请使用 Snowball Edge 客户端解锁设备。有关更多信息，请参阅 *AWS Snowball 开发人员指南*中的[使用 Snowball 客户端](https://docs.aws.amazon.com/snowball/latest/developer-guide/using-client.html)。

## API 端点
<a name="api-reference-endpoint"></a>

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

```
snowball.aws-region.amazonaws.com
```

例如，美国西部（俄勒冈）地区的 Snowball Edge API 终端节点如下所示。

```
snowball.us-west-2.amazonaws.com
```

有关 Snowball Edge 支持的列表（您可以在其中创建和管理作业），请参阅[AWS Import/Export](https://docs.aws.amazon.com/general/latest/gr/rande.html#ie-region)中的。 AWS 区域 *AWS 一般参考*

特定于区域的 API 端点定义了在您进行 API 调用时可以访问的 Snowball Edge 资源的范围。例如，当您使用上述端点调用 `ListJobs` 操作时，您将获得在您账户中创建的位于美国西部（俄勒冈州）区域的作业列表。

## API 版本
<a name="api-reference-version"></a>

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

## API 权限策略参考
<a name="api-reference-policies"></a>

使用 Snowball Edge 的任务管理 API 创建作业需要以下策略。

**用于创建作业的角色信任策略**

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

------
#### [ JSON ]

****  

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

------

**注意**  
要了解有关信任策略的更多信息，请参阅 IAM 用户指南中的[修改角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)。

**用于创建导入作业的角色策略**

创建导入作业时，需要使用以下角色策略。

------
#### [ JSON ]

****  

```
{
    "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": [
                "*"
            ]
        }
    ]
}
```

------

**用于创建导出作业的角色策略**

创建导出作业时，需要使用以下角色策略。

------
#### [ JSON ]

****  

```
{
  "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 Edge 一起使用的 Amazon S3 存储桶具有存储桶策略，要求列出代入角色的角色会话名称。在这些情况下，您需要在标识 `AWSImportExport-Validation` 的策略中指定一位委托人。以下示例 Amazon S3 存储桶策略展示了如何执行此操作。

**Example**    
****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "AllowAWSSnowballToCreateJobs",
		"Effect": "Allow",
		"Principal": {
			"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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#NotPrincipal)*中的。

**注意**  
对于中的作业 AWS GovCloud (US)，Snowball Edge 使用`AWSIEJob`代入角色的角色会话名称作为角色会话名称。

## 为 Snowball Edge 和 Snowball Edge 创建 IAM 角色
<a name="create-iam-role"></a>

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

当您在中创建任务时 AWS Snow 系列管理控制台，将在第 4 步的 “**权限**” 部分中创建必要的 IAM 角色。此过程是自动的。您允许 Snowball Edge 担任的 IAM 角色仅在包含您已传输数据的 Snowball 到达时用于将您的数据写入存储桶。 AWS此流程包括下列步骤。

**为导入作业创建 IAM 角色**

1. 登录 AWS 管理控制台 并打开 AWS Snowball Edge 控制台，网址为[https://console.aws.amazon.com/importexport/](https://console.aws.amazon.com/importexport/)。

1. 请选择**创建作业**。

1. 在第一步中，在 Amazon S3 中填写导入作业的详细信息，然后选择**下一步**。

1. 在第二步中，在**权限**下选择**创建/选择 IAM 角色**。

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

1. 检查此页上的详细信息，然后选择**允许**。

   您将返回到 AWS Snow 系列管理控制台，其中**选定的 IAM 角色 ARN** 包含您刚刚创建的 IAM 角色的亚马逊资源名称 (ARN)。

1. 选择**下一步**完成创建您的 IAM 角色。

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

**用于导入作业的 IAM 角色**

------
#### [ JSON ]

****  

```
          {
  "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:::*"
    }
  ]
}
```

------

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

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

**用于导出作业的 IAM 角色**

------
#### [ JSON ]

****  

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

------

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

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