无法在 AWS Glue 数据目录的连接中连接 Amazon RDS

问题描述 投票:0回答:1

我正在尝试在 AWS Glue 中添加 Amazon RDS (Postgres 15) 连接:

我的 JDBC URL 是

jdbc:postgresql://xxx.xxx.us-west-2.rds.amazonaws.com:5432/my_db

我可以在 pgAdmin 4 中成功连接。

但是,当我通过

测试此连接时

我“失败”了。

我正在使用的 IAM 角色甚至具有 AmazonRDSFullAccess:

当我单击“查看日志”按钮时,错误日志并没有多大帮助。 AWS 似乎在解析错误时遇到问题:

ERROR StatusLogger Unrecognized format specifier [d]
ERROR StatusLogger Unrecognized conversion specifier [thread] starting at position 25 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [thread]

这是我的安全组配置。基本上入站和出站规则都允许所有流量:

安全组-入站规则:

安全组-出站规则:

我想知道还有什么可能导致此连接问题?谢谢!

amazon-web-services amazon-rds aws-glue
1个回答
0
投票

该问题是由 AWS Glue 使用旧的 JDBC 驱动程序引起的。所以我必须手动上传最新的驱动程序。

步骤1.下载最新的JDBC驱动程序并上传到S3

https://jdbc.postgresql.org/download/下载最新的 JDBC 驱动程序 截至今天,我下载了最新的 JDBC 驱动程序 42.6.0 Java 8 版本,文件名是

postgresql-42.6.0.jar
.

然后我上传到

s3://my-bucket/aws-glue/postgresql-jdbc-driver/postgresql-42.6.0.jar

步骤 2. 更新 JDBC 连接

在 AWS Glue -> 连接器中更新您的 JDBC 连接

  • JDBC 驱动程序类名称:
    org.postgresql.Driver
  • JDBC 驱动程序 S3 路径:
    s3://my-bucket/aws-glue/postgresql-jdbc-driver/postgresql-42.6.0.jar

步骤 3. 为正在使用的 AWS Glue IAM 角色添加新访问权限

为了使用我自己的 JDBC 驱动程序,我需要向 IAM 角色添加以下权限:

  • 授予以下作业操作的权限:
    CreateJob
    DeleteJob
    GetJob
    GetJobRun
    StartJobRun
  • 授予 IAM 操作权限:
    iam:PassRole
  • 授予 Amazon S3 操作权限:
    s3:DeleteObjects
    s3:GetObject
    s3:ListBucket
    s3:PutObject
  • 授予服务主体对 IAM 策略中的存储桶和您的 JDBC 驱动程序 S3 位置的访问权限。

默认的

AWSGlueServiceRole
策略有
CreateJob
DeleteJob
GetJob
GetJobRun
StartJobRun
。所以我只需要提供对我创建的新策略的其余访问权限:
AWSGlueServiceRole-MyPolicy

现在 IAM 角色应该具有

默认
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::my-bucket/aws-glue/postgresql-jdbc-driver/postgresql-42.6.0.jar", "arn:aws:s3:::my-bucket" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::xxxxxxxxxxxx:role/service-role/AWSGlueServiceRole-xxx" ] } ] }
  • 政策
    我的新政策
  • AWSGlueServiceRole
  • 
    

注意“测试连接”仍然会失败并出现错误日志

原因:com.amazonaws.services.glue.exceptions.InvalidInputException:当前不支持测试与自定义驱动程序的连接。 原因:com.amazonaws.services.glue.exceptions.InvalidInputException:当前不支持测试与自定义驱动程序的连接。

不过,爬虫应该会成功!

© www.soinside.com 2019 - 2024. All rights reserved.