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

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

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

SageMaker 笔记本实例支持 Amazon Virtual Private Cloud (Amazon VPC) 接口端点,这些端点由 Amazon PrivateLink 提供支持。每个 VPC 端点都由您的 VPC 子网中一个或多个使用私有 IP 地址的弹性网络接口代表。

注意

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

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

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

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

要通过 VPC 连接到笔记本实例,您必须从位于 VPC 内部的实例进行连接,或者使用 Amazon Virtual Private Network (Amazon VPN) 或 Amazon Direct Connect 将您的私有网络连接到 VPC。有关 Amazon VPN 的信息,请参阅《Amazon Virtual Private Cloud 用户指南》中的 VPN 连接。有关 Amazon Direct Connect 的信息,请参阅《Amazon Direct Connect 用户指南》中的创建连接

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

  • 可执行操作的委托人。

  • 可执行的操作。

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

有关更多信息,请参阅《Amazon VPC 用户指南》中的使用 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 API 或笔记本实例。

要将访问限制为仅限从您 VPC 中进行的连接,请创建 Amazon Identity and Access Management 策略,将访问限制为仅允许来自您 VPC 中调用。然后,将该策略添加到用于访问笔记本实例的每个 Amazon 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 }
注意

生成的 presigned-notebook-instance-url (AuthorizedUrl) 可在互联网上的任何地方使用。

对于这两个调用,如果您没有为 VPC 端点启用专用 DNS 主机名,或者您使用在 2018 年 8 月 13 日之前发布的 Amazon SDK 版本,则必须在调用中指定端点 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