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

授予 SageMaker 编译作业访问 Amazon VPC 中资源的权限

注意

对于编译作业,您只能为子网配置默认租赁 VPC,其中您的作业在共享硬件上运行。有关 VPC 租赁属性的更多信息,请参阅专用实例

配置编译作业以进行 Amazon VPC 访问

要在私有 VPC 中指定子网和安全组,请使用 CreateCompilationJob API 的 VpcConfig 请求参数,或者当在 SageMaker 控制台中创建编译作业时提供此信息。SageMaker Neo 使用此信息创建网络接口,然后将其附加到您的编译作业。网络接口在未连接到互联网的 VPC 中为编译作业提供网络连接。它们还可将您的编译作业连接到私有 VPC 中的资源。以下是您在调用 CreateCompilationJob 时将包含的 VpcConfig 参数的示例:

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

配置私有 VPC 以进行 SageMaker 编译

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

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

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

创建 Amazon S3 VPC 端点

如果您将 VPC 配置为阻止访问互联网,则 SageMaker Neo 无法连接到包含模型的 Amazon S3 存储桶,除非您创建一个允许访问的 VPC 端点。通过创建 VPC 端点,您允许 SageMaker Neo 编译作业访问用于存储数据和模型构件的存储桶。我们还建议您创建自定义策略,只允许来自私有 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. 选择网关类型。

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

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

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

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

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

{ "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-01234567890123456" ] } } } ] }

将在 Amazon VPC 中运行的编译作业的权限添加到自定义 IAM 策略

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

{"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

配置路由表

对端点路由表使用默认的 DNS 设置,以便解析标准 Amazon S3 URL(例如 http://s3-aws-region.amazonaws.com/MyBucket)。如果您不使用默认 DNS 设置,则确保通过配置端点路由表来解析用于指定编译作业中数据位置的 URL。有关 VPC 端点路由表的信息,请参阅《Amazon VPC 用户指南》中的网关端点路由

配置 VPC 安全组

在编译作业的安全组中,您必须允许与 Amazon S3 Amazon VPC 端点和用于编译作业的子网 CIDR 范围进行出站通信。有关信息,请参阅安全组规则使用 Amazon VPC 端点控制对服务的访问权限