Thanks for your answer.
Unfortunately it didn't change anyting.
I'm trying to launch self-hosted connector using docker on WSL2 Win11 Pro
I prepared docker-compose.yml with services
- db: MySQL8 (works ok)
- es: Elasticsearch 8.17.0 (works ok)
- kb: Kibana (works ok)
- connector: Elasticsearch Connector 8.17.0 (here is problem with parsing config.yml)
And still got parsing errors inside connector container:
es_connector | [FMWK][10:04:58][INFO] Running connector service version 8.17.0
es_connector | [FMWK][10:04:58][INFO] Loading config from /app/config.yml
es_connector | [FMWK][10:04:58][WARNING] configured API key will be used over configured basic auth
es_connector | [FMWK][10:04:58][INFO] Running preflight checks
es_connector | [FMWK][10:04:58][INFO] Waiting for Elasticsearch at https://es:9200 (so far: 0 secs)
es_connector | [FMWK][10:04:58][INFO] Elasticsearch 8.17.0 and Connectors 8.17.0 are compatible
es_connector | [FMWK][10:04:58][INFO] Extraction service is not configured, skipping its preflight check.
es_connector | [FMWK][10:04:58][INFO] Bye
es_connector | Traceback (most recent call last):
es_connector | File "/app/bin/elastic-ingest", line 33, in <module>
es_connector | sys.exit(load_entry_point('elasticsearch-connectors', 'console_scripts', 'elastic-ingest')())
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/.venv/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
es_connector | return self.main(*args, **kwargs)
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/.venv/lib/python3.11/site-packages/click/core.py", line 1078, in main
es_connector | rv = self.invoke(ctx)
es_connector | ^^^^^^^^^^^^^^^^
es_connector | File "/app/.venv/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
es_connector | return ctx.invoke(self.callback, **ctx.params)
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/.venv/lib/python3.11/site-packages/click/core.py", line 783, in invoke
es_connector | return __callback(*args, **kwargs)
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/connectors/service_cli.py", line 233, in main
es_connector | return run(action, config_file, log_level, filebeat, service_type, uvloop)
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/connectors/service_cli.py", line 172, in run
es_connector | return loop.run_until_complete(coro)
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/usr/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
es_connector | return future.result()
es_connector | ^^^^^^^^^^^^^^^
es_connector | File "/app/connectors/service_cli.py", line 48, in _start_service
es_connector | success, is_serverless = await preflight.run()
es_connector | ^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/connectors/preflight_check.py", line 51, in run
es_connector | valid_configuration = self._validate_configuration()
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/connectors/preflight_check.py", line 235, in _validate_configuration
es_connector | configured_connector_id = connector.get("connector_id", None)
es_connector | ^^^^^^^^^^^^^
es_connector | AttributeError: 'str' object has no attribute 'get'
My config.yml
is
elasticsearch:
host: "https://es:9200"
ssl: true
verify_certs: true
ca_certs: /app/certs/ca.crt
api_key: my_api_key_from_kibana
connectors:
connector_id: "my_connector_id_form_kibana"
service_type: "mysql"
When i tried different format (along with connectors/docs/CONFIG.md at main · elastic/connectors · GitHub)
elasticsearch:
host: "https://es:9200"
ssl: true
verify_certs: true
ca_certs: /app/certs/ca.crt
api_key: my_api_key_from_kibana
connectors:
-
connector_id: "my_connector_id_form_kibana"
service_type: "mysql"
i got another parsing error
[FMWK][10:10:34][INFO] Running connector service version 8.17.0
es_connector | [FMWK][10:10:34][INFO] Loading config from /app/config.yml
es_connector | [FMWK][10:10:34][ERROR] Could not parse /app/config.yml. Check logs for more information.
es_connector | 'list' object has no attribute 'keys'
es_connector | Traceback (most recent call last):
es_connector | File "/app/connectors/service_cli.py", line 116, in run
es_connector | config = load_config(config_file)
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/connectors/config.py", line 24, in load_config
es_connector | _nest_configs(nested_yaml_config, key, value)
es_connector | File "/app/connectors/config.py", line 186, in _nest_configs
es_connector | current_leaf[last_key] = dict(_merge_dicts(current_leaf[last_key], value))
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/connectors/config.py", line 192, in _merge_dicts
es_connector | for k in set(hsh1.keys()).union(hsh2.keys()):
es_connector | ^^^^^^^^^
es_connector | AttributeError: 'list' object has no attribute 'keys'
es_connector | Error: Could not parse /app/config.yml. Check logs for more information
I checked also another one format (along with config.yml.example
)
elasticsearch:
host: "https://es:9200"
ssl: true
verify_certs: true
ca_certs: /app/certs/ca.crt
api_key: my_api_key_from_kibana
connectors:
- connector_id: "my_connector_id_form_kibana"
service_type: "mysql"
but still got parsing errors
es_connector | [FMWK][10:17:39][INFO] Running connector service version 8.17.0
es_connector | [FMWK][10:17:39][INFO] Loading config from /app/config.yml
es_connector | [FMWK][10:17:39][ERROR] Could not parse /app/config.yml. Check logs for more information.
es_connector | 'list' object has no attribute 'keys'
es_connector | Traceback (most recent call last):
es_connector | File "/app/connectors/service_cli.py", line 116, in run
es_connector | config = load_config(config_file)
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/connectors/config.py", line 24, in load_config
es_connector | _nest_configs(nested_yaml_config, key, value)
es_connector | File "/app/connectors/config.py", line 186, in _nest_configs
es_connector | current_leaf[last_key] = dict(_merge_dicts(current_leaf[last_key], value))
es_connector | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
es_connector | File "/app/connectors/config.py", line 192, in _merge_dicts
es_connector | for k in set(hsh1.keys()).union(hsh2.keys()):
es_connector | ^^^^^^^^^
es_connector | AttributeError: 'list' object has no attribute 'keys'
es_connector | Error: Could not parse /app/config.yml. Check logs for more information
I've tried also with the newest connector version (8.17.2) but still the same.
UPDATE:
Passing config in old deprecated format works propertly:
elasticsearch:
host: "https://es:9200"
ssl: true
verify_certs: true
ca_certs: /app/certs/ca.crt
api_key: my_api_key_from_kibana
connector_id: "my_connector_id_form_kibana"
service_type: "mysql"
but it's deprcated and support only one connector.