使用 Cloud Formation 创建的 AWS Glue JDBC 连接未设置密码

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

如果我创建与 RDS Aurora 实例的 Glue JDBC 连接,该连接将不起作用并出现以下错误:

InvalidInputException: Unable to resolve any valid connection
。在AWS控制台中检查后,我发现CloudFormation没有设置Glue连接的密码。因此,连接不起作用。

这是用于创建 Glue 连接的 CloudFormation 脚本:

GlueConn:
    Type: "AWS::Glue::Connection"
    Properties:
        CatalogId: 6256161516
        ConnectionInput:
            Name: test-glue-conn
            ConnectionProperties:
                JDBC_CONNECTION_URL: "jdbc:postgresql://..." # Hidden for security
                JDBC_ENFORCE_SSL: "false"
                PASSWORD: password
                USERNAME: username
            ConnectionType: JDBC
            Description: "Glue Conn. for SO"
            PhysicalConnectionRequirements:
                AvailabilityZone: us-east-1
                SubnetId: ahbnr9ow3qhjojngovbme # Hidden for security
                SecurityGroupIdList:
                    - jhwgq9748jhognjmovjo # Hidden for security

遵循https://stackoverflow.com/a/69474820/8992678给出的SO答案后,我在

AvailabilityZone
下添加了
PhysicalConnectionRequirements
。另外,我使用 AWS CLI 来获取工作连接的详细信息,如 SO 上的建议。

运行 AWS CLI 获取 Glue 连接的详细信息后,我发现 AWS 在

KAFKA_SSL_ENABLED: "false"
下添加了一个新密钥
ConnectionProperties
。虽然如果我编辑此连接,我还无法在 AWS 控制台中看到密码,但我能够将之前的错误解决为新的错误消息
Failed to test connection test-conn due to FAILED status.
,这在后来的一些测试中导致了
Network error

amazon-web-services aws-cloudformation aws-glue
2个回答
2
投票

我猜 CloudFormation 无法正确创建 JDBC 的 Glue 连接;也许这是 AWS 团队需要解决的新或旧错误。我将针对此问题提出 AWS 支持票证;将在收到他们的消息后更新此答案。

临时解决方案:同时,如果我使用 AWS CLI 使用相同的详细信息(包括密码)创建或更新 Glue 连接,那么它就可以工作。因此,我将在 CI/CD 中添加一个额外步骤,以在 CloudFormation 脚本之后运行 AWS CLI,作为临时解决方法,直到 CloudFormation 更好地支持它。


0
投票
我遇到了同样的问题,并向 AWS 提出了支持案例,他们能够为我解决。

实际上,罪魁祸首是“PhysicalConnectionRequirements”中缺少“AvailabilityZone”。文档将其显示为可选,但事实并非如此。 AWS 控制台只是自动从您的子网中查找并设置它,而使用 Cloudformation 您可以提供它。

亚马逊回应:

“深入研究验证错误后,我发现该错误是由于缺少“AvailabilityZone”[1] 参数而不是密码而弹出的。此外,有趣的发现是,当我们在控制台上编辑连接并保存它时,连接详细信息现在自动填充为“AvailabilityZone”。这似乎是内部 API 调用,当从控制台调用时,会添加可能很重要的其余字段,我可以理解文档 [1] 建议“AvailabilityZone”是可选的。字段,但我相信它是必需的,并且在通过控制台创建连接时会根据您的子网详细信息自动填充。”

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