红移连接的粘合作业:“无法找到合适的安全组”

Posted

技术标签:

【中文标题】红移连接的粘合作业:“无法找到合适的安全组”【英文标题】:glue job for redshift connection: "Unable to find suitable security group" 【发布时间】:2017-10-02 18:30:23 【问题描述】:

我正在尝试设置 AWS Glue 作业并连接到 Redshift。

将连接类型设置为 Redshift 时出现错误:

“无法找到合适的安全组。将连接类型更改为 JDBC 并重试添加您的连接。”

按照here in these forums 所说的内容,我为角色AWSGlueServiceRoleDefault 向我的IAM 帐户添加了权限:

然后我使用匹配的 IAM 角色 AWSGlueServiceRoleDefault 设置作业:

我需要将 Glue 数据存储在 Redshift DB 中,所以我选择了 JDBC 然后添加了一个连接:

我一选择Redshift,它就抱怨找不到合适的安全组。这是为什么呢?

【问题讨论】:

【参考方案1】:

我在尝试将 Glue 与 Amazon RDS (mysql) 连接时发现了同样的问题,并按照 AWS Glue 指南解决了这个问题 -> Setting Up a VPC to Connect to JDBC Data Stores。

简而言之,您应该检查与您的 RedShift 集群关联的安全组是否允许自引用流量。

    转到 RedShift 控制台并选择 集群 查看集群属性部分,了解与集群关联的安全组的 ID(例如 sg-957be3ef)。 单击安全组名称以跳转到 EC2 控制台 -> 安全组部分。选择组并修改入站和出站规则,添加自引用规则以允许 AWS Glue 组件进行通信。 入站规则:选择 Type=All TCP,保留默认值并在 Source 字段中输入安全组(即本例中的 sg-957be3ef)。 出站规则:与入站规则相同。

希望有效!

【讨论】:

设置自引用规则后,我在 SSH 到我的端点时遇到问题,最终需要从 0.0.0.0/0 开放到 22 的端口。 同样的问题,这个解决方案成功了!谢谢楼主?? 我正在尝试为 postgres 数据库做同样的事情,但是当尝试从入站规则的源字段中添加安全组时,我收到以下消息:You may not specify a referenced group id for an existing IPv4 CIDR rule. 我非常感谢您帮助。【参考方案2】:

你必须创建一个:

1)AWSGlueServiceRole 角色并附加s3FullAccess,GlueServiceRoleRedshiftFullAccess 策略。

2) 检查您是否有 vpc 端点,如果没有,请创建一个 VPC 端点并确保将子网添加到路由表中。 3)创建自引用安全组。

现在使用 JDBC 连接,

jdbc:type://xxxx:port/databasename

类型是redshift/postgresql/etc... xxxx: server name 数据库所在的位置。

【讨论】:

【参考方案3】:

改用 JDBC 连接来连接到您的 Redshift。只需确保相应的 VPC 定义了端点即可。

【讨论】:

以上是关于红移连接的粘合作业:“无法找到合适的安全组”的主要内容,如果未能解决你的问题,请参考以下文章

胶水加载作业不保留红移中的默认列值

查找或恢复已删除的 AWS 粘合作业

创建 AWS 粘合作业是不是需要爬网程序?

如何使用 AWS java SDK 使用 AWS 粘合作业生成自动脚本

使用 pyspark 将作业粘合到联合数据帧

隧道到红移集群