

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

# 为批量转换作业授予 Amazon VPC 中的资源的访问权限
<a name="batch-vpc"></a>

要控制对数据和批量转换作业的访问，我们建议您创建一个私有 Amazon VPC 并对其进行配置，确保无法通过公共互联网访问您的作业。在创建模型时，您可以指定子网和安全组以指定私有 VPC 配置。然后，您可以在创建批量转换作业时指定相同的模型。当您指定子网和安全组时， SageMaker AI 会在其中一个子*网中创建与您的安全组关联的弹性网络接口*。网络接口可将您的模型容器连接到 VPC 中的资源。有关网络接口的信息，请参阅《Amazon VPC 用户指南》**中的[弹性网络接口](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ElasticNetworkInterfaces.html)。

本文档介绍如何为批量转换任务添加 Amazon VPC 配置。

## 配置批量转换作业以进行 Amazon VPC 访问
<a name="batch-vpc-configure"></a>

要在您的私有 VPC 中指定子网和安全组，请使用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API 的`VpcConfig`请求参数，或者在 SageMaker AI 控制台中创建模型时提供此信息。然后，在 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)API 的`ModelName`请求参数中指定相同的模型，或者在 SageMaker AI 控制台中创建转换任务时在**模型名称**字段中指定相同的模型。 SageMaker AI 使用这些信息来创建网络接口并将其连接到您的模型容器。网络接口在未连接到互联网的 VPC 中为您的模型容器提供网络连接。它们还允许您的转换作业连接到私有 VPC 中的资源。

以下是您在调用 `CreateModel` 时将包含的 `VpcConfig` 参数的示例：

```
VpcConfig: {
      "Subnets": [
          "subnet-0123456789abcdef0",
          "subnet-0123456789abcdef1",
          "subnet-0123456789abcdef2"
          ],
      "SecurityGroupIds": [
          "sg-0123456789abcdef0"
          ]
        }
```

如果您使用 `CreateModel` API 操作创建模型，则用于创建模型的 IAM 执行角色必须包含 [CreateModel API：执行角色权限](sagemaker-roles.md#sagemaker-roles-createmodel-perms)中描述的权限，包括私有 VPC 所需的以下权限。

在控制台中创建模型时，如果您在 “**模型设置**” 部分中选择 “**创建新角色**”，则用于创建该角色的[AmazonSageMakerFullAccess ](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess$jsonEditor)策略已包含这些权限。如果选择**输入自定义 IAM 角色 ARN** 或**使用现有角色**，则指定的角色 ARN 必须附加具有以下权限的执行策略。

```
{
            "Effect": "Allow",
            "Action": [
            "ec2:CreateNetworkInterface",
            "ec2:CreateNetworkInterfacePermission",
            "ec2:DeleteNetworkInterface",
            "ec2:DeleteNetworkInterfacePermission",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeVpcs",
            "ec2:DescribeDhcpOptions",
            "ec2:DescribeSubnets",
            "ec2:DescribeSecurityGroups"
```

## 为 SageMaker AI Batch 转换配置您的私有 VPC
<a name="batch-vpc-vpc"></a>

在为 SageMaker AI 批处理转换任务配置私有 VPC 时，请遵循以下指南。有关设置 VPC 的信息，请参阅 *Amazon VPC 用户指南*中的[使用 VPCs 和子网](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/working-with-vpcs.html)。

**Topics**
+ [确保子网拥有足够的 IP 地址](#batch-vpc-ip)
+ [创建 Amazon S3 VPC 端点](#batch-vpc-s3)
+ [使用自定义终端节点策略限制 S3 访问](#batch-vpc-policy)
+ [配置路由表](#batch-vpc-route-table)
+ [配置 VPC 安全组](#batch-vpc-groups)
+ [连接到 VPC 之外的资源](#batch-vpc-nat)

### 确保子网拥有足够的 IP 地址
<a name="batch-vpc-ip"></a>

对于转换作业中的每个实例，您的 VPC 子网应至少具有两个私有 IP 地址。有关更多信息，请参阅 *Amazon VPC 用户指南 IPv4中的 VPC* [和子网大小](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html#vpc-sizing-ipv4)。

### 创建 Amazon S3 VPC 端点
<a name="batch-vpc-s3"></a>

如果您将 VPC 配置为使模型容器不具有互联网访问权限，则这些容器无法连接到包含数据的 Amazon S3 存储桶，除非您创建一个允许访问的 VPC 端点。通过创建 VPC 终端节点，您允许模型容器访问用于存储数据和模型构件的存储桶。我们还建议您创建自定义策略，只允许来自私有 VPC 的请求访问您的 S3 存储桶。有关更多信息，请参阅[用于 Amazon S3的端点](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints-s3.html)。

**要创建 S3 VPC 终端节点，请执行以下操作：**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择 **Endpoints (终端节点)**，然后选择 **Create Endpoint (创建终端节点)**。

1. 对于**服务名称**，请选择 **com.amazonaws。 *region*.s3**，其中*region*是您的 VPC 所在区域的名称。

1. 对于 **VPC**，请选择要用于该终端节点的 VPC。

1. 对于 **Configure route tables**，选择终端节点要使用的路由表。VPC 服务自动将一个路由添加到您选择的每个路由表中，它将任何 S3 流量传送到新的终端节点。

1. 对于 **Policy (策略)**，请选择 **Full Access (完全访问)** 以允许 VPC 中的任何用户或服务完全访问 S3 服务。选择 **Custom (自定义)** 以进一步限制访问。有关信息，请参阅[使用自定义终端节点策略限制 S3 访问](#batch-vpc-policy)。

### 使用自定义终端节点策略限制 S3 访问
<a name="batch-vpc-policy"></a>

默认终端节点策略允许您的 VPC 中的任何用户或服务完全访问 S3。要进一步限制 S3 访问，请创建一个自定义终端节点策略。有关更多信息，请参阅[对 Amazon S3 使用端点策略](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3)。您也可以使用存储桶策略将 S3 存储桶访问限制为仅来自您的 Amazon VPC 的流量。有关信息，请参阅[使用 Amazon S3 存储桶策略](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-s3-bucket-policies)。

#### 限制在模型容器上安装包
<a name="batch-vpc-policy-repos"></a>

默认终端节点策略允许用户在训练容器中安装来自 Amazon Linux 和 Amazon Linux 2 存储库的包。如果您不希望用户安装来自该存储库的包，则创建一个自定义终端节点策略，明确拒绝访问 Amazon Linux 和 Amazon Linux 2 存储库。以下是拒绝访问这些存储库的策略示例：

```
{ 
    "Statement": [ 
      { 
        "Sid": "AmazonLinuxAMIRepositoryAccess",
        "Principal": "*",
        "Action": [ 
            "s3:GetObject" 
        ],
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::packages.*.amazonaws.com/*",
            "arn:aws:s3:::repo.*.amazonaws.com/*"
        ] 
      } 
    ] 
} 

{ 
    "Statement": [ 
        { "Sid": "AmazonLinux2AMIRepositoryAccess",
          "Principal": "*",
          "Action": [ 
              "s3:GetObject" 
              ],
          "Effect": "Deny",
          "Resource": [
              "arn:aws:s3:::amazonlinux.*.amazonaws.com/*" 
              ] 
         } 
    ] 
}
```

### 配置路由表
<a name="batch-vpc-route-table"></a>

使用终端节点路由表的默认 DNS 设置，以便标准的 Amazon S3 URLs （例如`http://s3-aws-region.amazonaws.com/amzn-s3-demo-bucket`）可以解析。如果您不使用默认 DNS 设置，请确保通过配置终端节点路由表来解析用于在批处理转换任务中指定数据位置的。 URLs 有关 VPC 端点路由表的信息，请参阅《Amazon VPC 用户指南》**中的[网关端点路由](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpce-gateway.html#vpc-endpoints-routing)。

### 配置 VPC 安全组
<a name="batch-vpc-groups"></a>

在分布式批量转换中，您必须允许同一批量转换作业中的不同容器之间进行通信。为此，请为您的安全组配置规则，以允许同一安全组的成员之间实现入站和出站连接。同一安全组的成员应能通过所有端口相互通信。有关更多信息，请参阅[安全组规则](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html#SecurityGroupRules)。

### 连接到 VPC 之外的资源
<a name="batch-vpc-nat"></a>

如果您将 VPC 配置为不具有 Internet 访问权限，则使用该 VPC 的批量转换作业无权访问 VPC 之外的资源。如果您的批量转换作业需要访问您的 VPC 外部的资源，请使用以下选项之一提供访问权限：
+ 如果您的批处理转换任务需要访问支持接口 VPC 终端节点的 AWS 服务，请创建一个终端节点来连接到该服务。有关支持接口端点的服务的列表，请参阅《Amazon VPC 用户指南》**中的 [VPC 端点](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html)。有关创建接口 VPC 终端节点的信息，请参阅 *Amazon VPC 用户指南中的接口 VPC* [终端节点 (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpce-interface.html)。
+ 如果您的批处理转换任务需要访问不支持接口 VPC 终端节点的 AWS 服务或外部的资源 AWS，请创建 NAT 网关并将您的安全组配置为允许出站连接。有关为 VPC 设置 NAT 网关的信息，请参阅 [Amazon Virtual Private Cloud 用户指南](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html)中的*场景 2：带有公有子网和私有子网 (NAT) 的 VPC*。