简体   繁体   English

使用 boto3 创建到 mysql 的胶水连接

[英]create glue connection to mysql using boto3

I'm trying to create a new aws glue connection.我正在尝试创建一个新的 aws 胶水连接。 I'm using the boto3 script below.我正在使用下面的 boto3 脚本。 I'm able to connect with similar scripts and retrieve the structure of tables in data catalog databases.我能够连接类似的脚本并检索数据目录数据库中的表结构。 So I know the client is working.所以我知道客户正在工作。 I know the availability zone is us-west-2 also.我知道可用区也是 us-west-2。 I copied the rest of the info from a glue connection I'd already created.我从我已经创建的胶水连接中复制了信息的 rest。 I was just trying to test the boto3 script to see if I could create a connection through the script.我只是想测试 boto3 脚本,看看是否可以通过脚本创建连接。 Does anyone see what the issue might be?有谁看到问题可能是什么? I'm trying to connect to a mysql database on an ec2 instance.我正在尝试连接到 ec2 实例上的 mysql 数据库。

code:代码:

# 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'
        }
    }
)

error:错误:

---------------------------------------------------------------------------
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

The create_connection Glue API defined by Boto3 does not mention what parameters are to be passed for the 'ConnectionProperties' field. Boto3 定义的 create_connection Glue API 没有提到要为“ConnectionProperties”字段传递哪些参数。 It only mentions key-value pairs are to be supplied.The values to be passed are as below.它只提到要提供键值对。要传递的值如下。


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>']
    }
    }
)

I had the ConnectionProperties wrong.我的 ConnectionProperties 错误。 replace 'string' with 'JDBC_CONNECTION_URL'.将“字符串”替换为“JDBC_CONNECTION_URL”。 The correction is below.更正如下。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM