Как использовать параметры тела в облачной функции Google, которые определены в планировщике облака Google (Python)? - PullRequest
1 голос
/ 19 сентября 2019

В моей облачной функции у меня есть запрос, который я выполняю и записываю результат задания в новую таблицу больших запросов.Я хочу, чтобы мой запрос был динамическим на основе некоторых значений единиц измерения (с использованием внешних динамических параметров), я запускаю эту облачную функцию из планировщика облака Google (который содержит некоторые значения параметров в разделе Body (с использованием метода post с вызовом http)), Может кто-нибудьПредложите, как использовать значения этого параметра из секции body облачного планировщика в мою облачную функцию, чтобы сделать мой запрос динамическим

Передача определенных параметров в секцию Body облачного планировщика, но не знаете, как их использовать в облачной функции.

Планировщик тела облака:

{
'unit': 'myunitname'
'interval':'1'
}

Функция облака:

import flask
from google.cloud import bigquery

app = flask.Flask(__name__)


def main(request):
    with app.app_context():
        query = "SELECT unitId FROM `myproject.mydataset.mytable` 
        where unit ='{}' and interval='{}'".format(unit,interval)
        client = bigquery.Client()
        job_config = bigquery.QueryJobConfig()
        dest_dataset = client.dataset('mydataset', 'myproject')
        dest_table = dest_dataset.table('mytable')
        job_config.destination = dest_table
        job_config.create_disposition = 'CREATE_IF_NEEDED'
        job_config.write_disposition = 'WRITE_APPEND'
        job = client.query(query, job_config=job_config)
        job.result()

        return "Triggered"

1 Ответ

3 голосов
/ 19 сентября 2019

Лучший способ сделать это - сохранить все внутреннее в Google Cloud, используя pub / sub:

[ официальный учебник Google ]

Ваш Cloud Cloud Scheduler отправляетсообщение в Pub / Sub с объектом полезной нагрузки информации, которая необходима вашей облачной функции.Облачная функция должна запускаться вне темы Pub / Sub, и тогда вы можете получить доступ к message.attributes, который вам необходим для динамической части, на которую вы ссылаетесь.

Cloud Scheduler - публикуется в -> Pub/Sub Topic- push subscriber -> Cloud Function


Если вы хотите продолжать использовать HTTP, вы можете следовать здесь , где описано, как использовать POST из вашей функции.Вы используете модуль requests для извлечения атрибутов тела, которые вы передали в своем задании Cloud Scheduler.

...