为 SageMaker Processing 作业授予您的 Amazon VPC 中的资源的访问权限。 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 SageMaker Processing 作业授予您的 Amazon VPC 中的资源的访问权限。

要控制对您的数据和处理作业的访问,请创建具有私有子网的 Amazon VPC。有关创建和配置 VPC 的信息,请参阅《Amazon VPC 用户指南》中的 Amazon VPC 入门

您可以通过 VPC 流日志来监控进出处理容器的所有网络流量。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 流日志

本文档介绍如何为处理作业添加 Amazon VPC 配置。

配置处理作业以进行 Amazon VPC 访问

您可以通过指定 VPC 中的子网和安全组 ID 来配置处理作业。您无需为处理容器指定子网。Amazon SageMaker 会自动从 Amazon ECR 中提取处理容器。有关处理容器的更多信息,请参阅处理数据

创建处理作业时,您可以使用 SageMaker 控制台或 API 在 VPC 中指定子网和安全组。

要使用 API,您需要在 CreateProcessingJob 操作的 NetworkConfig.VpcConfig 参数中指定子网和安全组 ID。SageMaker 使用子网和安全组详细信息来创建网络接口并将其附加到处理容器。网络接口在 VPC 中为处理容器提供网络连接。这允许处理作业连接到您的 VPC 中存在的资源。

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

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

为 SageMaker Processing 配置私有 VPC

为 SageMaker 处理作业配置私有 VPC 时,请使用以下准则。有关设置 VPC 的信息,请参阅《Amazon VPC 用户指南》中的使用 VPC 和子网

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

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

创建 Amazon S3 VPC 端点

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

要创建 S3 VPC 终端节点,请执行以下操作:
  1. 通过 https://console.aws.amazon.com/vpc/ 打开 Amazon VPC 控制台。

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

  3. 对于服务名称,请选择 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 URL(例如 http://s3-aws-region.amazonaws.com/MyBucket)。如果您不使用默认 DNS 设置,则确保通过配置终端节点路由表来解析用于指定处理作业中数据位置的 URL。有关 VPC 端点路由表的信息,请参阅《Amazon VPC 用户指南》中的网关端点路由

配置 VPC 安全组

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

连接到 VPC 之外的资源

如果您要将模型连接到它们运行所在的 VPC 之外的资源,请执行以下操作之一:

  • 连接到其他 Amazon 服务 - 如果您的模型需要访问支持接口 Amazon VPC 端点的 Amazon 服务,请创建连接到该服务的端点。有关支持接口端点的服务列表,请参阅《Amazon PrivateLink 用户指南》中的与 Amazon PrivateLink 集成的 Amazon 服务。有关创建接口 VPC 端点的信息,请参阅《Amazon PrivateLink 用户指南》中的使用接口 VPC 端点访问 Amazon 服务

  • 通过互联网连接到资源 - 如果您的模型在 Amazon VPC 中的实例上运行,而该 VPC 没有可访问互联网的子网,则模型将无法访问互联网上的资源。如果您的模型需要访问不支持接口 VPC 端点的 Amazon 服务,或者需要访问 Amazon 外部的资源,请确保您的模型在私有子网中运行,该子网可使用公有子网中的公有 NAT 网关访问互联网。在私有子网中运行模型后,请配置您的安全组和网络访问控制列表 (NACL),以允许建立从私有子网到公有子网中公有 NAT 网关的出站连接。有关信息,请参阅《Amazon VPC 用户指南》中的 NAT 网关

使用 CloudWatch 日志和指标监控 Amazon SageMaker Processing 作业

Amazon SageMaker 提供 Amazon CloudWatch 日志和指标来监控训练作业。CloudWatch 可提供 CPU、GPU、内存、GPU 内存和磁盘指标以及事件日志记录。有关监控 Amazon SageMaker 处理作业的更多信息,请参阅使用 Amazon CloudWatch 监控 Amazon SageMakerSageMaker 作业和端点指标