使用Boto3创建AWS Glue连接MySQL遇InvalidInputException错误求助
排查AWS Glue CreateConnection的InvalidInputException问题
我一眼就看到了你代码里几个明显的问题,正是这些导致了连接属性验证失败:
1. ConnectionProperties的键名错误
Glue的JDBC连接对ConnectionProperties里的键名有严格要求,你把JDBC URL的键写成了'string',这是不对的,必须用官方规定的'JDBC_CONNECTION_URL'作为键名。
2. MatchCriteria的占位符未清理
MatchCriteria里的'string'是Boto3文档里的占位符,你需要移除它——如果不需要匹配条件,直接传空列表[]就行;如果需要匹配标签,再填入实际的标签值。
3. AvailabilityZone格式不正确
你填的'us-west-2'是AWS区域,而Glue要求的是具体的可用区(比如us-west-2a、us-west-2b),而且这个可用区必须和你指定的SubnetId所在的可用区一致。
修正后的代码
# create new connection response = client.create_connection( ConnectionInput={ 'Name': 'tst_scrpt', 'ConnectionType': 'JDBC', 'MatchCriteria': [], # 移除占位符,留空或添加实际标签 'ConnectionProperties': { 'JDBC_CONNECTION_URL': 'jdbc:mysql://xxxxx:3306/disxxx', 'username':'root', 'password':'ipxxxxx' }, 'PhysicalConnectionRequirements': { 'SubnetId': 'subnet-04xxxxx', 'SecurityGroupIdList': [ 'sg-xxxxx' ], 'AvailabilityZone': 'us-west-2a' # 替换为子网所在的具体可用区 } } )
额外检查点
除了上面的修改,你还可以确认以下几点:
- 你指定的子网和安全组属于同一个VPC
- 安全组
sg-xxxxx已经配置了入站规则,允许Glue服务访问EC2上MySQL的3306端口 - JDBC URL里的主机地址(xxxxx)是EC2实例的私有IP(因为Glue通过VPC连接),并且实例处于运行状态
内容的提问来源于stack exchange,提问作者user3476463
相关产品推荐
相关产品推荐

