如何在Sagemaker的笔记本实例中连接到数据库?

0

【以下的问题经过翻译处理】 你好,

我正在SageMaker中设置jupyter笔记本,使用jdbc jars连接到本地数据库。但它显示以下错误消息。

“:com.microsoft.sqlserver.jdbc.SQLServerException:TCP/IP连接到主机xxx.xxx.xxx.xxx,端口21000失败。错误:“连接超时。验证连接属性。确保SQL Server的实例在主机上运行,并在端口上接受TCP/IP连接。确保TCP连接到端口未被防火墙阻止。”。“

我使用的VPC、子网、安全组完全与我的Glue Job中提取数据所使用的完全相同。虽然Glue Job工作正常,但SageMaker笔记本失败。我确定防火墙已经打开了。

有人能告诉我如何解决它吗?

我还看到了以下文章,但我不确定它是根本原因。

https://aws.amazon.com/blogs/machine-learning/understanding-amazon-sagemaker-notebook-instance-networking-configurations-and-advanced-routing-options/

profile picture
专家
已提问 9 个月前21 查看次数
1 回答
0

【以下的回答经过翻译处理】 您好,

一般原则是笔记本实例和数据库实例之间必须有网络连接,数据库实例的安全组应允许来自笔记本实例的入站流量。

其中一个设置的示例为:

  1. RDS数据库实例位于VPC vpc-a和子网subnet-b。
  2. SageMaker笔记本在VPC vpc-a中启动,在子网subnet-b中,使用安全组sg-c并启用了“禁用直接连接互联网”的选项。
  3. 在RDS数据库实例的安全组规则中,您可以添加一个入站规则,允许来自SageMaker笔记本安全组“sg-c”的入站流量。

-- 类型 - 协议 - 端口范围 - 来源

-- MYSQL/Aurora - TCP - 3306 - sg-c


示例代码:

!pip install mysql-connector

import mysql.connector
mydb = mysql.connector.connect(
host=”$RDS_ENDPOINT”,
user=”$RDS_USERNAME”,
passwd=”$RDS_PASSWORD”
)
cursor = mydb.cursor()
cursor.execute(“SHOW DATABASES”)

感谢您使用Amazon SageMaker,如果有其他需要帮助的地方,请随时联系我们!

profile picture
专家
已回答 9 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则