为批量转换作业授予 Amazon VPC 中的资源的访问权限 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

为批量转换作业授予 Amazon VPC 中的资源的访问权限

默认情况下,SageMaker 在 Amazon Virtual Private Cloud 中运行批量转换作业。但是,模型容器通过 Internet 访问 AWS 资源 — 例如,用于存储数据和模型构件的 Amazon S3 存储桶。—

要控制对您的模型容器和数据的访问,我们建议您创建一个私有 VPC,并配置该 VPC 以便无法通过 Internet 进行访问。有关创建和配置 VPC 的信息,请参阅 https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/getting-started-ipv4.html 中的 Amazon VPC 用户指南Amazon VPC 入门。使用 VPC 有助于保护您的模型容器和数据,因为您可以配置 VPC 以使其不连接到 Internet。使用 VPC,您还可以通过 VPC 流日志来监控进出模型容器的所有网络流量。有关更多信息,请参阅 https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/flow-logs.html 中的 Amazon VPC 用户指南VPC 流日志

在创建模型时,您可以指定子网和安全组以指定私有 VPC 配置。然后,您可以在创建批量转换作业时指定相同的模型。当您指定子网和安全组时,SageMaker 会创建与其中一个子网中的安全组关联的弹性网络接口。网络接口允许您的模型容器连接到 VPC 中的资源。有关网络接口的信息,请参阅 https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/VPC_ElasticNetworkInterfaces.html 用户指南 中的Amazon VPC弹性网络接口

配置批量转换作业以进行 Amazon VPC 访问

要在私有 VPC 中指定子网和安全组,请使用 VpcConfig CreateModel API 的 请求参数,或者当在 SageMaker 控制台中创建模型时提供此信息。然后,当您在 ModelName 控制台中创建转换作业时,在 CreateTransformJob API 的 请求参数中或在 Model name (模型名称)SageMaker 字段中指定相同的模型。SageMaker 使用此信息创建网络接口并将其附加到您的模型容器。网络接口在未连接到 Internet 的 VPC 中为您的模型容器提供网络连接。它们还允许您的转换作业连接到私有 VPC 中的资源。

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

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

如果您使用 CreateModel API 操作创建模型,则用于创建模型的 IAM 执行角色必须包含CreateModel API:执行角色权限中描述的权限,包括私有 VPC 所需的以下权限。

在控制台中创建模型时,如果您在 Model Settings (模型设置) 部分中选择 Create a new role (创建新角色),则用于创建角色的 AmazonSageMakerFullAccess 策略将已经包含这些权限。如果选择 Enter a custom IAM role ARN (输入自定义 IAM 角色 ARN)Use existing role (使用现有角色),则指定的角色 ARN 必须具有附加具有以下权限的执行策略。

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

配置私有 VPC 以进行 SageMaker 批量转换

为 SageMaker 批量转换作业配置私有 VPC 时,请使用以下准则。有关设置 VPC 的信息,请参阅 用户指南VPCs 中的使用 和子网Amazon VPC。

确保子网拥有足够的 IP 地址

对于转换作业中的每个实例,您的 VPC 子网应至少具有两个私有 IP 地址。有关更多信息,请参阅 用户指南IPv4 中的 的 VPC 和子网大小调整。Amazon VPC

创建 Amazon S3 VPC 终端节点

如果您将 VPC 配置为使模型容器不具有 Internet 访问权限,则这些容器无法连接到包含数据的 Amazon S3 存储桶,除非您创建一个允许访问的 VPC 终端节点。通过创建 VPC 终端节点,您允许模型容器访问用于存储数据和模型构件的存储桶。我们还建议您创建自定义策略,只允许来自私有 VPC 的请求访问您的 S3 存储桶。有关更多信息,请参阅 Amazon S3 的终端节点

要创建 S3 VPC 终端节点,请执行以下操作:

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

  2. 在导航窗格中,选择 Endpoints (终端节点),然后选择 Create Endpoint (创建终端节点)

  3. 对于 Service Name,选择 com.amazonaws。region.s3,其中 region 是您的 VPC 所在的区域的名称。

  4. 对于 VPC,请选择要用于该终端节点的 VPC。

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

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

使用自定义终端节点策略限制 S3 访问

默认终端节点策略允许您的 VPC 中的任何用户或服务完全访问 S3。要进一步限制 S3 访问,请创建一个自定义终端节点策略。有关更多信息,请参阅在 Amazon S3 中使用终端节点策略。您也可以使用存储桶策略将 S3 存储桶访问限制为仅来自您的 Amazon VPC 的流量。有关信息,请参阅使用 Amazon S3 存储桶策略

限制在模型容器上安装包

默认终端节点策略允许用户在训练容器中安装来自 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/*" ] } ] }

配置路由表

对终端节点路由表使用默认 DNS 设置,以便解析标准 Amazon S3 URLs(例如,http://s3-aws-region.amazonaws.com/MyBucket)。如果您不使用默认 DNS 设置,则确保通过配置终端节点路由表来解析用于指定批量转换作业中数据位置的 URLs。有关 VPC 终端节点路由表的信息,请参阅 https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/vpce-gateway.html#vpc-endpoints-routing 用户指南中的Amazon VPC网关终端节点路由

配置 VPC 安全组

在分布式批量转换中,您必须允许同一批量转换作业中的不同容器之间进行通信。为此,请为您的安全组配置规则,以允许同一安全组的成员之间实现入站连接。有关信息,请参阅安全组规则

连接到 VPC 之外的资源

如果您将 VPC 配置为不具有 Internet 访问权限,则使用该 VPC 的批量转换作业无权访问 VPC 之外的资源。如果您的批量转换作业需要访问您的 VPC 外部的资源,请使用以下选项之一提供访问权限:

  • 如果您的批量转换作业需要访问支持接口 VPC 终端节点的 AWS 服务,请创建连接到该服务的终端节点。有关支持接口终端节点的服务的列表,请参阅 https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/vpc-endpoints.html 中的 Amazon VPC 用户指南VPC 终端节点。有关创建接口 VPC 终端节点的信息,请参阅 PrivateLink 中的接口 VPC 终端节点 (AWS )Amazon VPC 用户指南。

  • 如果您的批量转换作业需要访问不支持接口 VPC 终端节点的 AWS 服务,或需要访问 AWS 之外的资源,请创建一个 NAT 网关,并将安全组配置为允许出站连接。有关为 VPC 设置 NAT 网关的信息,请参阅场景 2:。Amazon Virtual Private Cloud 用户指南 中的具有公有和私有子网 (NAT) 的 VPC