

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

# 为多轮 RL 任务配置 VPC
<a name="model-customize-mtrl-vpc"></a>

当您在多回合 RL 任务配置`VpcConfig`中提供时，Amazon A SageMaker I 会在您的 VPC 中放置代理弹性网络接口 (ENI)。所有客户数据流量（包括对您的 S3 存储桶的访问权限、代理调用和日志记录）都流经此 ENI。这样可以将数据保持在您的 VPC 网络边界内。

**子网**

在不同的可用区中提供两个或多个私有子网以实现冗余。子网不需要 NAT 网关或互联网接入，因为所有流量都通过 VPC 终端节点退出。

**安全组**

使用以下出站规则创建安全组。不需要入站规则。
+ 出站 TCP 443 到 `0.0.0.0/0`
+ 出站 UDP 53 到 `0.0.0.0/0`

**注意**  
为了更严格的安全性，您可以将出口限制为 S3 托管前缀列表和接口终端节点 ENI 的私有 IP 地址，而不是允许。`0.0.0.0/0`

**VPC 端点**

创建以下 VPC 终端节点，以便来自代理 ENI 的流量无需访问互联网即可到达 Amazon 服务。


| 端点 | 流量已路由 | 服务名称 | Type | 
| --- | --- | --- | --- | 
| S3（必填） | 提示数据、作业输出、mlFlow 工件 (GetObject、PutObject、ListBucket) | com.amazonaws.{{region}}.s3 | 网关 | 
| CloudWatch 日志（必填） | 训练容器日志 (PutLogEvents、CreateLogGroup、CreateLogStream) | com.amazonaws.{{region}}.logs | 接口 | 
| 基岩 AgentCore （如果使用基岩剂，则为必填项） | 代理调用 () InvokeAgentRuntime | com.amazonaws.{{region}}.bedrock-agentcore | 接口 | 
| Lambda（如果使用 Lambda 代理，则为必填项） | 通过 Lambda 转发器调用代理 () Invoke | com.amazonaws.{{region}}.lambda | 接口 | 
| mlFlow（如果使用 mlFlow 跟踪，则需要） | 训练指标和跟踪（LogBatch、StartTrace、EndTrace） | aws.sagemaker.{{region}}.mlflow | 接口 | 

**注意**  
在所有接口终端节点上启用私有 DNS。

**接口终端节点安全组**

所有接口终端节点都必须与来自您的 VPC CIDR 的入站 TCP 443 共享一个安全组。

**IAM 权限**

执行角色必须包括用于 ENI 管理的 EC2 权限。向角色添加以下政策声明。

```
[
    {
        "Effect": "Allow",
        "Action": [
            "ec2:CreateNetworkInterface",
            "ec2:CreateNetworkInterfacePermission",
            "ec2:DeleteNetworkInterface",
            "ec2:DeleteNetworkInterfacePermission",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeSubnets",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeVpcs"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "ec2:CreateTags"
        ],
        "Resource": "arn:aws:ec2:*:*:network-interface/*",
        "Condition": {
            "StringEquals": {
                "ec2:CreateAction": "CreateNetworkInterface"
            }
        }
    }
]
```

**API 配置**

在您的多回合 RL 任务请求中包含该`VpcConfig`参数。

```
"VpcConfig": {
    "Subnets": ["subnet-0abc123", "subnet-0def456"],
    "SecurityGroupIds": ["sg-0abc123def"]
}
```

您可以应用其他限制来进一步保护您的 VPC 配置。

**S3 存储桶策略**

要限制 S3 仅访问您的 VPC，请添加带有`aws:SourceVpc`条件的拒绝策略。

```
{
    "Sid": "DenyAccessFromOutsideVpc",
    "Effect": "Deny",
    "Principal": "*",
    "Action": "s3:*",
    "Resource": [
        "arn:aws:s3:::{{my-mtrl-bucket}}",
        "arn:aws:s3:::{{my-mtrl-bucket}}/*"
    ],
    "Condition": {
        "StringNotEquals": {
            "aws:SourceVpc": "{{vpc-0abc123def}}"
        }
    }
}
```

**注意**  
只有当请求通过 S3 网关端点时，才会填充`aws:SourceVpc`条件密钥。

**VPC 端点策略**

您可以将接口端点限制为仅允许多回合 RL 作业所需的操作。以下示例将 Lo CloudWatch gs 端点限制为使用`/aws/sagemaker/Job/`前缀的日志组。

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "logs:PutLogEvents",
                "logs:CreateLogGroup",
                "logs:CreateLogStream"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/sagemaker/Job/*"
        }
    ]
}
```