繁体   English   中英

如何在 airflow 中使用 airflow REST API 类型的外部提供商(如谷歌云平台)创建连接器

[英]How to create connector in airflow that is of type external provider (like the google-cloud-plaform) with the airflow REST API

我正在尝试通过 github 操作在 airflow 中自动创建连接器,但由于它是外部提供程序,因此需要发送到 airflow REST API 的有效负载不起作用,我没有找到有关如何操作的任何文档它。

所以这是我要发送的有效载荷:

PAYLOAD = {
    "connection_id": CONNECTOR,
    "conn_type": "google_cloud_platform",
    "extra": json.dumps({
        "google_cloud_platform": {
            "keyfile_dict" : open(CONNECTOR_SERVICE_ACCOUNT_FILE, "r").read(),
            "num_retries" : 2,
        }
    })
}

根据此处的 airflow 文档

我在 airflow UI 的“创建连接器”页面上找到的信息: Airflow UI 创建连接器页面

但是我没有收到任何错误(代码 200)并且连接器已创建但没有我尝试配置的设置。

我确认创建在 UI 上有效。

有没有人有解决方案或文件提到我需要发送到 airflow rest api 的正确有效负载? 或者也许我想念什么。

  • Airflow 版本:2.2.3+作曲家
  • 云作曲器版本 (GCP):2.0.3
  • Github 亚军版本:2.288.1
  • 语言:Python

谢谢大家,如有其他问题,请随时与我联系。

再见

@vdolez 是写的,将有效负载格式化为具有完全相同的格式 airflow REST API 想要。 是这样的:

"{\"extra__google_cloud_platform__key_path\": \"\", 
\"extra__google_cloud_platform__key_secret_name\": \"\", 
\"extra__google_cloud_platform__keyfile_dict\": \"{}\", 
\"extra__google_cloud_platform__num_retries\": 5, 
\"extra__google_cloud_platform__project\": \"\", 
\"extra__google_cloud_platform__scope\": \"\"}"

当你需要在其中一些字段中嵌套字典时,不值得花费时间和精力。 但万一有人想知道,你必须转义每一个特殊字符。

我更改我的工作流程以通知主管用户在我的管道成功后手动创建连接器。

我会尝试联系 airflow/cloud composer 支持,看看我们是否可以提供更好格式化的功能。

通过 web 发送数据时,您可能会遇到编码/解码问题

由于您使用的是 Composer,因此使用Composer CLI 创建连接可能是个好主意。

以下是如何在 Composer 中运行 airflow 命令:

gcloud composer environments run ENVIRONMENT_NAME \
    --location LOCATION \
    SUBCOMMAND \
    -- SUBCOMMAND_ARGUMENTS

以下是使用本机 Airflow 命令创建连接的方法:

airflow connections add 'my_prod_db' \
    --conn-type 'my-conn-type' \
    --conn-login 'login' \
    --conn-password 'password' \
    --conn-host 'host' \
    --conn-port 'port' \
    --conn-schema 'schema' \
    ...

结合两者,你会得到类似的东西:

gcloud composer environments run ENVIRONMENT_NAME \
    --location LOCATION \
    connections \
    -- add 'my_prod_db' \
    --conn-type 'my-conn-type' \
    --conn-login 'login' \
    --conn-password 'password' \
    --conn-host 'host' \
    --conn-port 'port' \
    --conn-schema 'schema' \
    ...

您可以在已安装gcloud的 Docker 图像中运行它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM