python-3.x - 使用 boto3 创建到 mysql 的胶水连接
问题描述
我正在尝试创建一个新的 aws 胶水连接。我正在使用下面的 boto3 脚本。我能够连接类似的脚本并检索数据目录数据库中的表结构。所以我知道客户正在工作。我知道可用区也是 us-west-2。我从我已经创建的粘合连接中复制了其余信息。我只是想测试 boto3 脚本,看看是否可以通过脚本创建连接。有谁看到问题可能是什么?我正在尝试连接到 ec2 实例上的 mysql 数据库。
代码:
# create new connection
response = client.create_connection(
ConnectionInput={
'Name': 'tst_scrpt',
'ConnectionType': 'JDBC',
'MatchCriteria': [
'string',
],
'ConnectionProperties': {
'string': 'jdbc:mysql://xxxxx:3306/disxxx',
'username':'root',
'password':'ipxxxxx'
},
'PhysicalConnectionRequirements': {
'SubnetId': 'subnet-04xxxxx',
'SecurityGroupIdList': [
'sg-xxxxx'
],
'AvailabilityZone': 'us-west-2'
}
}
)
错误:
---------------------------------------------------------------------------
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
解决方案
Boto3 定义的 create_connection Glue API 没有提到要为“ConnectionProperties”字段传递哪些参数。它只提到要提供键值对。要传递的值如下。
client = boto3.client('glue', region_name='<region-to-use>')
response = client.create_connection(
CatalogId='<account-id>',
ConnectionInput={
'Name': '<name-of-the-connection>',
'Description': 'Test connection',
'ConnectionType':'JDBC',
'ConnectionProperties': {
'USERNAME': '<db-username>',
'JDBC_ENFORCE_SSL': 'false',
'PASSWORD': '<db-password>',
'JDBC_CONNECTION_URL': 'jdbc:protocol://host:port/db_name'
},
'PhysicalConnectionRequirements': {
'SubnetId': '<subnet-to-use>',
'AvailabilityZone': '<availability-zone-to-use>',
'SecurityGroupIdList': ['<security-group(s)-to-use>']
}
}
)
推荐阅读
- pip - `ansible --version` 命令抛出错误
- c# - 使用 Azure SignalR 时,无法加载 Microsoft.Extensions.Logging.Abstractions
- javascript - 如何避免在洪水填充算法期间超过最大调用堆栈大小?
- css - 按字符类更改 CSS 中的样式
- mysql - 选择具有总和的mysql数据
- node.js - 填充NodeJs MongoDB后获取数据
- docker - docker 多个阶段 - docker gradle 构建成功,但 docker openjdk 构建失败:复制失败:未指定源文件
- java - Eclipse 中的 Java 13 和 JavaFX 13
- html - 如何在不使用路径的情况下制作眼睛形状的 SVG?
- php - 在左连接中显示来自 master 的 1 个主键