Python 3.x 使用boto3创建到mysql的粘合连接

Python 3.x 使用boto3创建到mysql的粘合连接,python-3.x,boto3,aws-glue,aws-glue-data-catalog,Python 3.x,Boto3,Aws Glue,Aws Glue Data Catalog,我正在尝试创建一个新的aws胶水连接。我正在使用下面的boto3脚本。我能够连接类似的脚本并检索数据目录数据库中的表结构。所以我知道客户在工作。我知道可用区也是us-west-2。我从已经创建的胶水连接复制了其余的信息。我只是想测试boto3脚本,看看是否可以通过该脚本创建连接。有人知道问题可能是什么吗?我正在尝试连接到ec2实例上的mysql数据库 代码: 错误: -----------------------------------------------------------------

我正在尝试创建一个新的aws胶水连接。我正在使用下面的boto3脚本。我能够连接类似的脚本并检索数据目录数据库中的表结构。所以我知道客户在工作。我知道可用区也是us-west-2。我从已经创建的胶水连接复制了其余的信息。我只是想测试boto3脚本,看看是否可以通过该脚本创建连接。有人知道问题可能是什么吗?我正在尝试连接到ec2实例上的mysql数据库

代码:

错误:

---------------------------------------------------------------------------
InvalidInputException                     Traceback (most recent call last)
<ipython-input-20-c3f33f9c9933> in <module>
     18                 'sg-xxxxx'
     19             ],
---> 20             'AvailabilityZone': 'us-west-2'
     21         }
     22     }

/anaconda3/envs/py36/lib/python3.6/site-packages/botocore/client.py in _api_call(self, *args, **kwargs)
    355                     "%s() only accepts keyword arguments." % py_operation_name)
    356             # The "self" in this scope is referring to the BaseClient.
--> 357             return self._make_api_call(operation_name, kwargs)
    358 
    359         _api_call.__name__ = str(py_operation_name)

/anaconda3/envs/py36/lib/python3.6/site-packages/botocore/client.py in _make_api_call(self, operation_name, api_params)
    659             error_code = parsed_response.get("Error", {}).get("Code")
    660             error_class = self.exceptions.from_code(error_code)
--> 661             raise error_class(parsed_response, operation_name)
    662         else:
    663             return parsed_response

InvalidInputException: An error occurred (InvalidInputException) when calling the CreateConnection operation: Validation for connection properties failed
---------------------------------------------------------------------------
InvalidInputException回溯(最近一次调用上次)
在里面
18'sg-xxxxx'
19             ],
--->20“可用区”:“us-west-2”
21         }
22     }
/anaconda3/envs/py36/lib/python3.6/site-packages/botocore/client.py in_api_调用(self,*args,**kwargs)
355“%s()仅接受关键字参数。“%py\u操作\u名称)
356#此范围中的“自我”指的是BaseClient。
-->357返回self.\u make\u api\u调用(操作名称,kwargs)
358
359\u api\u调用。\u名称\u=str(py\u操作\u名称)
/anaconda3/envs/py36/lib/python3.6/site-packages/botocore/client.py in\u make\u api\u调用(self、operation\u name、api\u参数)
659 error_code=parsed_response.get(“error”),{}.get(“code”)
660错误\u类=自身。异常。来自\u代码(错误\u代码)
-->661引发错误\u类(解析的\u响应、操作\u名称)
662其他:
663返回解析的_响应
InvalidInputException:调用CreateConnection操作时发生错误(InvalidInputException):连接属性验证失败

我的ConnectionProperties错误。将“字符串”替换为“JDBC\u连接\u URL”。更正如下

 'ConnectionProperties': {
                'JDBC_CONNECTION_URL': 'jdbc:mysql://dataxxx:3306/disxxx',
                'username':'root',
                'password':'ip1k5PNCxxxxx'
            }

Boto3定义的create_connection Glue API没有提到要为“ConnectionProperties”字段传递哪些参数。它只提到要提供的键值对。要传递的值如下所示


client=bot3.client('glue',region\u name='')
response=client.create\u连接(
CatalogId=“”,
连接输入={
“姓名”:“,
“描述”:“测试连接”,
“ConnectionType”:“JDBC”,
“ConnectionProperties”:{
“用户名”:“,
“JDBC_强制_SSL”:“false”,
“密码”:“,
“JDBC_连接_URL”:“JDBC:protocol://host:port/db_name'
},
“物理连接要求”:{
“子网”:“,
“可用区”:“,
“SecurityGroupIdList”:[“”]
}
}
)

az不是区域。应该有一个字母索引,比如
us-east-1a
@Lamanus谢谢你回复我。我尝试将其更改为“'AvailabilityZone':'us-west-2b'”,但得到了相同的错误。也试过us-west-2a。正确的可用性区域是美国俄勒冈州。我不断收到“AvailabilityZone”的InvalidInputException,我根据我希望建立连接的子网的AZ给了我们-east-1a。有什么想法吗?
 'ConnectionProperties': {
                'JDBC_CONNECTION_URL': 'jdbc:mysql://dataxxx:3306/disxxx',
                'username':'root',
                'password':'ip1k5PNCxxxxx'
            }