

Amazon Snowball Edge不再向新客户提供。新客户应探索[Amazon DataSync](https://www.amazonaws.cn/datasync/)在线传输、用于安全物理[传输Amazon的数据传输终端](https://www.amazonaws.cn/data-transfer-terminal/)或Amazon合作伙伴解决方案。对于边缘计算，请浏览 [Amazon Out](https://www.amazonaws.cn/outposts/) posts。

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

# 使用作业管理 API
<a name="api-using"></a>

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

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

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

给定请求映射到的特定任务管理操作由请求的方法（GET、PUT、POST 或 DELETE）及其 Request-URI 匹配的各种模式的组合决定。如果操作是 PUT 或 POST，则 Snowball Edge 会从 Request-URI 路径段、查询参数和请求正文中的 JSON 对象中提取调用参数。

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

有关安装和设置的信息Amazon CLI，包括指定要对哪些区域进行Amazon CLI呼叫，请参阅《[Amazon Command Line Interface用户指南》](https://docs.amazonaws.cn/cli/latest/userguide/)。

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

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

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

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

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

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

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

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

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

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

## API 权限策略参考
<a name="api-using-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.amazonaws.cn/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.amazonaws.cn/IAM/latest/UserGuide/reference_policies_elements.html#NotPrincipal)*中的。

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

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

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

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

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

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

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

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

1. 在第二步中，在 “**权限**” 下，选择 **Create/Select IAM 角色**。

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

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

   您将返回到Amazon 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:::*"
    }
  ]
}
```

------

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

```
{
     "Effect": "Allow",
     "Action": [
       "kms:GenerateDataKey"
     ],
     "Resource": "arn:aws:kms:{{region}}:{{account-id}}:key/{{key-id}}"
}
```

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

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

****  

```
{
  "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:kms:{{region}}:{{account-id}}:key/{{key-id}}"
}
```