通过 VPC 接口终端节点连接到笔记本实例 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

通过 VPC 接口终端节点连接到笔记本实例

您可通过 Virtual Private Cloud (VPC) 中的接口终端节点,从 VPC 连接到笔记本实例,而不是通过 Internet。当您使用 VPC 接口终端节点时,您的 VPC 与笔记本实例之间的通信完全在 AWS 网络内安全进行。

SageMaker 笔记本实例支持由 AWS Amazon VPC 提供支持的 Amazon Virtual Private CloudPrivateLink () 接口终端节点。 每个 VPC 终端节点都由您的 VPC 子网中一个或多个具有私有 IP 地址的弹性网络接口表示。

注意

在创建连接到笔记本实例的接口 VPC 终端节点之前,请创建接口 VPC 终端节点以连接到 SageMaker API。这样,在用户调用 CreatePresignedNotebookInstanceUrl 以获取 URL 来连接到笔记本实例时,该调用还会通过接口 VPC 终端节点。有关信息,请参阅 通过 VPC 接口终端节点连接到 SageMaker

您可以通过 AWS 控制台或 AWS Command Line Interface (AWS CLI) 命令,创建接口终端节点来连接到笔记本实例。有关说明,请参阅创建接口终端节点。确保为 VPC 中要连接到笔记本实例的所有子网创建接口终端节点。

在创建接口终端节点时,请指定 aws.sagemaker。region.notebook 作为服务名称。在创建 VPC 终端节点后,为您的 VPC 终端节点启用私有 DNS。在 VPC 中使用 SageMaker API、AWS CLI 或控制台连接到笔记本实例的任何用户,都将通过 VPC 终端节点而非公有 Internet 连接到笔记本实例。

SageMaker 笔记本实例在同时提供 Amazon VPCSageMaker 的所有 AWS 区域中支持 VPC 终端节点。

要通过 VPC 连接到笔记本实例,您必须从位于 VPC 内部的实例进行连接,或者使用 Amazon Virtual Private Network (VPN) 或 AWS Direct Connect 将您的专用网络连接到 VPC。有关 Amazon VPN 的信息,请参阅 https://docs.amazonaws.cn/vpc/latest/userguide/vpn-connections.html 用户指南 中的 Amazon Virtual Private CloudVPN 连接。有关 AWS Direct Connect 的信息,请参阅 AWS Direct Connect 用户指南 中的创建连接

您可以为 SageMaker 笔记本实例的 Amazon VPC 终端节点创建一个策略,在该策略中指定以下内容:

  • 可执行操作的委托人。

  • 可执行的操作。

  • 可对其执行操作的资源。

有关更多信息,请参阅 用户指南 中的使用 VPC 终端节点控制对服务的访问Amazon VPC。

以下 VPC 终端节点策略示例指定,所有有权访问该终端节点的用户都可以访问名为 myNotebookInstance 的笔记本实例。

{ "Statement": [ { "Action": "sagemaker:CreatePresignedNotebookInstanceUrl", "Effect": "Allow", "Resource": "arn:aws:sagemaker:us-west-2:123456789012:notebook-instance/myNotebookInstance", "Principal": "*" } ] }

访问其他笔记本实例时会被拒绝。

即使您在 VPC 中设置了接口终端节点,在 VPC 之外的用户仍可以通过 Internet 访问笔记本实例。

重要

如果您应用类似于以下之一的 IAM 策略,用户将无法通过控制台访问指定的 SageMaker APIs 或笔记本实例。

要将访问限制为仅限从您 VPC 中进行的连接,请创建 AWS Identity and Access Management 策略,将访问限制为仅允许来自您 VPC 中调用。然后,将该策略添加到用于访问笔记本实例的每个 AWS Identity and Access Management 用户、组或角色。

注意

此策略只允许连接到创建接口终端节点的子网中的调用方。

{ "Id": "notebook-example-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable Notebook Access", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedNotebookInstanceUrl", "sagemaker:DescribeNotebookInstance" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-111bbaaa" } } } ] }

如果您想要将对笔记本实例的访问限制为仅允许使用接口终端节点进行的连接,请使用 aws:SourceVpce 条件键而不是 aws:SourceVpc

{ "Id": "notebook-example-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable Notebook Access", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedNotebookInstanceUrl", "sagemaker:DescribeNotebookInstance" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:sourceVpce": [ "vpce-111bbccc", "vpce-111bbddd" ] } } } ] }

这些策略示例均假定您已为 SageMaker API 创建终端节点。有关更多信息,请参阅通过 VPC 接口终端节点连接到 SageMaker。在第二个示例中,aws:SourceVpce 的值是笔记本实例的接口终端节点的 ID。另一个是 SageMaker API 的接口终端节点的 ID。

此处的策略示例包括 DescribeNotebookInstance,因为通常您将调用 DescribeNotebookInstance 以确保 NotebookInstanceStatus 在您尝试连接到其上之前处于 InService 状态。例如:

aws sagemaker describe-notebook-instance \ --notebook-instance-name myNotebookInstance { "NotebookInstanceArn": "arn:aws:sagemaker:us-west-2:1234567890ab:notebook-instance/mynotebookinstance", "NotebookInstanceName": "myNotebookInstance", "NotebookInstanceStatus": "InService", "Url": "mynotebookinstance.notebook.us-west-2.sagemaker.aws", "InstanceType": "ml.m4.xlarge", "RoleArn": "arn:aws:iam::1234567890ab:role/service-role/AmazonSageMaker-ExecutionRole-12345678T123456", "LastModifiedTime": 1540334777.501, "CreationTime": 1523050674.078, "DirectInternetAccess": "Disabled" } aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name myNotebookInstance { "AuthorizedUrl": "https://mynotebookinstance.notebook.us-west-2.sagemaker.aws?authToken=AuthToken }

对于这些调用,如果您没有为 VPC 终端节点启用专用 DNS 主机名,或者您使用在 2018 年 8 月 13 日之前发布的 AWS 开发工具包版本,则您必须在调用中指定终端节点 URL。例如,对 create-presigned-notebook-instance-url 的调用是:

aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name myNotebookInstance --endpoint-url VPC_Endpoint_ID.api.sagemaker.Region.vpce.amazonaws.com