用于红移连接的粘合工作:"无法找到合适的安全组"

时间:2017-10-02 18:30:23

标签: python amazon-web-services jdbc amazon-redshift aws-glue

我尝试设置AWS Glue作业并建立与Redshift的连接。

当我将连接类型设置为Redshift时,我收到错误:

  

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

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

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:1)

使用JDBC连接代替连接到Redshift。只需确保相应的VPC定义了一个终点。

答案 2 :(得分:0)

您必须创建一个:

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

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

现在使用JDBC连接进行连接

jdbc:type://xxxx:port/databasename

类型为redshift/postgresql/etc ... xxxx: server name托管数据库的地方。