【问题标题】:Calling a Google cloud function within Airflow DAG在 Airflow DAG 中调用 Google 云函数
【发布时间】:2019-08-27 07:45:41
【问题描述】:

我有一个正在运行的谷歌云功能,我正在尝试从 Airflow DAG 调用它。

到目前为止我尝试过的是使用 SimpleHttpOperator:

MY_TASK_NAME = SimpleHttpOperator(
        task_id= "MY_TASK_NAME",
        method='POST',
        http_conn_id='http_default',
        endpoint='https://us-central1-myprojectname.cloudfunctions.net/MyFunctionName',
        data=({"schema": schema, "table": table}),
        headers={"Content-Type": "application/json"},
        xcom_push=False
    )

但是深入日志,它说找不到资源:

{base_task_runner.py:98} 信息 - 子任务:

在此服务器上找不到请求的 URL /@987654321@。这就是我们所知道的。

我还注意到它实际上发布到https://www.google.com/ + 我提供的网址:

Sending 'POST' to url: https://www.google.com/https://us-central1-myprojectname.cloudfunctions.net/MyFunctionName

调用函数的正确方法是什么? 谢谢

【问题讨论】:

标签: python google-cloud-functions airflow directed-acyclic-graphs


【解决方案1】:

这是因为您使用的是http_conn_id='http_default'

http_default 连接如下所示:

如果您检查主机字段,它会显示http://www.google.com/

要么使用HTTP 连接类型创建新连接,要么修改http_default 连接并将主机更改为https://us-central1-myprojectname.cloudfunctions.net/

然后将任务中的endpoint 字段更新为:

MY_TASK_NAME = SimpleHttpOperator(
        task_id= "MY_TASK_NAME",
        method='POST',
        http_conn_id='http_default',
        endpoint='MyFunctionName',
        data=({"schema": schema, "table": table}),
        headers={"Content-Type": "application/json"},
        xcom_push=False
    )

编辑:在 URL 末尾添加 /

【讨论】:

  • 谢谢,我现在可以调用它了,但是我收到“错误 - HTTP 错误:禁止访问”,您知道为什么会这样吗?
  • 顺便说一句,这是一个小细节,但你可以在连接 url 的末尾添加一个 /,它需要一个。
  • 是的,你应该能够做到这一点
  • @SnehilSingh,确实如此,但那是 2 年前的事了,我不能保证它仍然有效。
  • @SnehilSingh 修复 URL 后,我记得我遇到了身份验证问题,因此您可能还想检查其他答案。
【解决方案2】:

正如@kaxil 所说,您需要先更改 http 连接。然后,您需要能够发送正确的身份验证以调用云功能。下面的链接有一个分步指南,通过子类化SimpleHttpOperator

https://medium.com/google-cloud/calling-cloud-composer-to-cloud-functions-and-back-again-securely-8e65d783acce


附带说明,Google 应该让这个过程更加清晰。想要从 Google Cloud Composer 触发 Google Cloud Function (gcf) 是完全合理的。 documentation 介绍如何将 http 触发器发送到 gcf,其中包括 Cloud Scheduler、Cloud Tasks、Cloud Pub/Sub 和许多其他人的文档,但不包括 Cloud Composer

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2018-10-26
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多