

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

# 让 SageMaker AI 编译任务访问您的 Amazon VPC 中的资源
<a name="neo-vpc"></a>

**注意**  
对于编译作业，您只能为子网配置默认租赁 VPC，其中您的作业在共享硬件上运行。有关租期属性的更多信息 VPCs，请参阅[专用实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/dedicated-instance.html)。

## 配置编译作业以进行 Amazon VPC 访问
<a name="neo-vpc-configure"></a>

要在您的私有 VPC 中指定子网和安全组，请使用 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateCompilationJob.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateCompilationJob.html)API 的`VpcConfig`请求参数，或者在 SageMaker AI 控制台中创建编译任务时提供此信息。 SageMaker AI Neo 使用这些信息来创建网络接口并将其连接到您的编译作业。网络接口在未连接到互联网的 VPC 中为编译作业提供网络连接。它们还可将您的编译作业连接到私有 VPC 中的资源。以下是您在调用 `CreateCompilationJob` 时将包含的 `VpcConfig` 参数的示例：

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

## 配置您的私有 VPC 以进行 SageMaker AI 编译
<a name="neo-vpc-vpc"></a>

在为 SageMaker AI 编译任务配置私有 VPC 时，请遵循以下准则。有关设置 VPC 的信息，请参阅 *Amazon VPC 用户指南*中的[使用 VPCs 和子网](https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/working-with-vpcs.html)。

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

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

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

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

如果您将 VPC 配置为阻止访问互联网，则除非您创建允许访问的 VPC 终端节点，否则 SageMaker Neo 无法连接到包含您的模型的 Amazon S3 存储桶。通过创建 VPC 终端节点，您可以允许 SageMaker Neo 编译任务访问存储数据和模型工件的存储桶。我们还建议您创建自定义策略，只允许来自私有 VPC 的请求访问您的 S3 存储桶。有关更多信息，请参阅[用于 Amazon S3的端点](https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/vpc-endpoints-s3.html)。

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

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

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

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

1. 选择**网关类型**。

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

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

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

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

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

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::your-sample-bucket",
                "arn:aws:s3:::your-sample-bucket/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpce": [
                        "vpce-1a2b3c4d"
                    ]
                }
            }
        }
    ]
}
```

------

#### 将在 Amazon VPC 中运行的编译作业的权限添加到自定义 IAM 策略
<a name="neo-vpc-custom-iam"></a>

`SageMakerFullAccess` 托管策略包含相应的权限，您需要具有这些权限才能使用为通过端点访问 Amazon VPC 而配置的模型。这些权限允许 SageMaker Neo 创建弹性网络接口并将其附加到在 Amazon VPC 中运行的编译任务。如果您使用自己的 IAM 策略，则必须将以下权限添加到该策略，以使用为进行 Amazon VPC 访问配置的模型。

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

****  

```
{"Version":"2012-10-17",		 	 	 
    "Statement": [
        {"Effect": "Allow",
            "Action": [
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DeleteNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:CreateNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute"
            ],
            "Resource": "*"
        }
    ]
}
```

------

有关 `SageMakerFullAccess` 托管策略的更多信息，请参阅 [Amazon 托管策略： AmazonSageMakerFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSageMakerFullAccess)。

### 配置路由表
<a name="neo-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.amazonaws.cn/AmazonVPC/latest/UserGuide/vpce-gateway.html#vpc-endpoints-routing)。

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

在编译作业的安全组中，您必须允许与 Amazon S3 Amazon VPC 端点和用于编译作业的子网 CIDR 范围进行出站通信。有关信息，请参阅[安全组规则](https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html#SecurityGroupRules)和[使用 Amazon VPC 端点控制对服务的访问权限](https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/vpc-endpoints-access.html)。