3

我想将数据从 Google Storage 加载到 S3

为此,我想使用GoogleCloudStorageToS3Operator,它需要gcp_conn_id

所以,我需要设置谷歌云连接类型

为此,我添加了

apache-气流[谷歌]==2.0.2

到 requirements.txt

但 Google Cloud 连接类型仍不在 MWAA 的连接下拉列表中 在此处输入图像描述

同样的方法适用于 mwaa 本地跑步者

https://github.com/aws/aws-mwaa-local-runner

我猜它在 MWAA 中不起作用,因为这里讨论了安全原因 https://lists.apache.org/thread.html/r67dca5845c48cec4c0b3c34c3584f7c759a0b010172b94d75b3188a3%40%3Cdev.airflow.apache.org%3E

但是,是否有任何解决方法可以在 MWAA 中添加 Google Cloud 连接类型?

4

3 回答 3

2

可以使用 UI 或环境变量来创建和管理连接。

据我了解,MWAA 对某些提供程序包安装的限制仅在 Web 服务器计算机上,这就是连接未在 UI 上列出的原因。这并不意味着您根本无法创建连接,而只是意味着您无法从 UI 中创建连接。

您可以从CLI定义它:

airflow connections add [-h] [--conn-description CONN_DESCRIPTION]
                        [--conn-extra CONN_EXTRA] [--conn-host CONN_HOST]
                        [--conn-login CONN_LOGIN]
                        [--conn-password CONN_PASSWORD]
                        [--conn-port CONN_PORT] [--conn-schema CONN_SCHEMA]
                        [--conn-type CONN_TYPE] [--conn-uri CONN_URI]
                        conn_id

您还可以生成连接 URI以使其更易于设置。

连接也可以设置为环境变量。例子:

export AIRFLOW_CONN_GOOGLE_CLOUD_DEFAULT='google-cloud-platform://?extra__google_cloud_platform__key_path=%2Fkeys%2Fkey.json&extra__google_cloud_platform__scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&extra__google_cloud_platform__project=airflow&extra__google_cloud_platform__num_retries=5'

如果需要,您可以查看google 提供程序包文档以查看连接的配置选项。

于 2021-07-16T06:17:51.367 回答
0

对于 MWAA,有 2 个选项可以设置连接:

  1. 设置环境变量。使用模式 AIRFLOW_CONN_YOUR_CONNECTION_NAME,例如 YOUR_CONNECTION_NAME = GOOGLE_CLOUD_DEFAULT。这可以使用自定义插件 https://docs.aws.amazon.com/mwaa/latest/userguide/samples-env-variables.html来完成
  2. 使用秘密管理器 https://docs.aws.amazon.com/mwaa/latest/userguide/connections-secrets-manager.html

测试谷歌云连接,两者都工作。

于 2021-07-19T17:26:44.240 回答
0

我就这个问题询问了 AWS 支持。看起来他们正在努力。

他们告诉我一种配置谷歌云平台连接的方法,在附加组件中传递一个 json 对象,Conn 类型为 HTTP。它有效。

我已经验证了编辑 google_cloud_default(Airflow > Admin > Connections)

连接类型:HTTP

额外:{ "extra__google_cloud_platform__project":"<YOUR_VALUE>", "extra__google_cloud_platform__key_path":"", "extra__google_cloud_platform__keyfile_dict":"{"type": "service_account","project_id": "<YOUR_VALUE>","private_key_id": "< YOUR_VALUE>", "private_key": "-----BEGIN PRIVATE KEY-----\n<YOUR_VALUE>\n-----END PRIVATE KEY-----\n", "client_email": “<YOUR_VALUE>”、“client_id”:“<YOUR_VALUE>”、“auth_uri”:“https://<YOUR_VALUE>”、“token_uri”:“https://<YOUR_VALUE>”、“auth_provider_x509_cert_url”:“https ://<YOUR_VALUE>", "client_x509_cert_url": "https://<YOUR_VALUE>"}", "extra__google_cloud_platform__scope":"", "extra__google_cloud_platform__num_retries":"5" }

气流连接屏幕截图

!!您必须在 extra__google_cloud_platform__keyfile_dict 中转义 " 和 /n !

在 requirements.txt 我使用: apa​​che-airflow[gcp]==2.0.2

(我相信 apache-airflow[google]==2.0.2 也应该可以)

于 2021-08-13T09:31:38.847 回答