AWS Airflow v2.0.2 不显示 Google 云连接类型

AWS Airflow v2.0.2 doesn't show Google Cloud connection type

我想将数据从 Google 存储加载到 S3

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

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

为此,我添加了

apache-airflow[google]==2.0.2

到requirements.txt

但 Google 云连接类型仍然不在 MWAA 的连接下拉列表中

同样的方法也适用于 mwaa local runner

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

由于此处讨论的安全原因,我猜它在 MWAA 中不起作用 https://lists.apache.org/thread.html/r67dca5845c48cec4c0b3c34c3584f7c759a0b010172b94d75b3188a3%40%3Cdev.airflow.apache.org%3E

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

可以使用 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

您也可以generate a connection 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 provider package docs 以查看连接的配置选项。

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

已针对 google 云连接进行测试,两者均正常工作。

我向 AWS Support 询问了这个问题。看起来他们正在努力。

他们告诉我一种配置 google 云平台连接的方法,在附加内容中传递一个 json 对象,Conn Type 为 HTTP。并且有效。

我已验证编辑 google_cloud_default(气流 > 管理 > 连接)

连接类型:HTTP

额外: { "extra__google_cloud_platform__project":"", "extra__google_cloud_platform__key_path":"", "extra__google_cloud_platform__keyfile_dict":"{"类型": "service_account","project_id": "","private_key_id": "< YOUR_VALUE>", "private_key": "-----私人开始 KEY-----\n\n-----私人结束 KEY-----\n ", "client_email": "", "client_id": "", "auth_uri": "https:/ /", "token_uri": "https://", "auth_provider_x509_cert_url": "https://", "client_x509_cert_url": "https://"}", "extra__google_cloud_platform__scope":"", “extra__google_cloud_platform__num_retries”:“5” }

airflow conn screenshot

!!您必须转义 extra__google_cloud_platform__keyfile_dict !!

中的 " 和 /n

在requirements.txt中我使用了: apache-气流[gcp]==2.0.2

(我相信 apache-airflow[google]==2.0.2 应该也能工作)