【问题标题】:AWS Airflow v2.0.2 doesn't show Google Cloud connection typeAWS Airflow v2.0.2 不显示 Google Cloud 连接类型
【发布时间】:2021-09-24 23:12:14
【问题描述】:

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

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

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

为此,我添加了

apache-airflow[google]==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 连接类型?

【问题讨论】:

    标签: amazon-web-services google-cloud-storage airflow mwaa


    【解决方案1】:

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

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

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

    连接类型:HTTP

    额外: { "额外__google_cloud_platform__project":"", "额外__google_cloud_platform__key_path":"", "extra__google_cloud_platform__keyfile_dict":"{"type": "service_account","project_id": "","private_key_id": "", "private_key": "-----BEGIN PRIVATE KEY--- --\n\n-----END PRIVATE KEY-----\n", "client_email": "", "client_id": "", "auth_uri": “https://”、“token_uri”:“https://”、“auth_provider_x509_cert_url”:“https://”、“client_x509_cert_url”:“https:// "}", "额外__google_cloud_platform__scope":"", “额外__google_cloud_platform__num_retries”:“5” }

    airflow conn screenshot

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        可以使用 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 中设置环境变量能够解决它
        猜你喜欢
        • 1970-01-01
        • 2022-11-21
        • 2021-08-19
        • 2022-07-05
        • 2022-11-27
        • 1970-01-01
        • 2022-12-09
        • 2020-11-02
        • 2021-03-27
        相关资源
        最近更新 更多