【问题标题】:Add GCP credentials to airflow via command line通过命令行将 GCP 凭据添加到气流
【发布时间】:2018-10-07 00:27:45
【问题描述】:

Airflow 允许我们通过命令行airflow connections 添加连接信息。这有助于通过 ansible 或其他开发运维工具自动部署气流安装。

目前尚不清楚如何通过命令行将与谷歌云平台(服务帐户)的连接添加到 ariflow。

【问题讨论】:

    标签: python command-line google-cloud-platform airflow


    【解决方案1】:

    Preairair 1.9 以下示例概述了如何使用 DAG 添加连接信息:https://gist.github.com/yu-iskw/42f9f0aa6f2ff0a2a375d43881e13b49

    def add_gcp_connection(ds, **kwargs):
        """"Add a airflow connection for GCP"""
        new_conn = Connection(
            conn_id=<CONNECTION_ID>,
            conn_type='google_cloud_platform',
        )
        scopes = ['https://www.googleapis.com/auth/cloud-platform']
        conn_extra = {
            "extra__google_cloud_platform__scope": ",".join(scopes),
            "extra__google_cloud_platform__project":
                "<GCP_PROJECT_NAME>",
            "extra__google_cloud_platform__key_path":
                "<GCP_CREDENTIALS_ABSOLUTE_PATH.json>"
        }
        conn_extra_json = json.dumps(conn_extra)
        new_conn.set_extra(conn_extra_json)
    
        session = settings.Session()
        session.add(new_conn)
        session.commit()
    

    从气流 1.9 向前一个可以:

    airflow connections -a \
      --conn_id=<CONNECTION_ID> \
      --conn_type=google_cloud_platform \
      --conn_extra='{ "extra__google_cloud_platform__key_path":" '`
            `'<GCP_CREDENTIALS_ABSOLUTE_PATH.json>", '`
        `'"extra__google_cloud_platform__project": '`
            `'"<GCP_PROJECT_NAME>", '`
        `'"extra__google_cloud_platform__scope":  '`
            `'"https://www.googleapis.com/auth/cloud-platform"}'
    

    【讨论】:

      【解决方案2】:

      自发布以来,已为 Google Cloud 连接添加了文档:https://airflow.apache.org/docs/apache-airflow-providers-google/stable/connections/gcp.html

      作为使用--conn_extra 的替代方法,您可以使用conn_uri,这会使将值替换为json 字符串变得困难。例如:

      # AIRFLOW_CONN_GOOGLE_CLOUD_DEFAULT='google-cloud-platform://'
      # GCP_PROJECT='<your-gcp-project>'
      airflow connections \
        --add \
        --conn_id '<CONNECTION_ID>' \
        --conn_uri "${AIRFLOW_CONN_GOOGLE_CLOUD_DEFAULT}?extra__google_cloud_platform__project=${GCP_PROJECT}"
      

      您可以根据需要添加任意数量的额外 uri 参数,用 &s 分隔。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-10
        • 1970-01-01
        • 1970-01-01
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        相关资源
        最近更新 更多