在我的云函数中,我有一个查询,我正在执行该查询,并将作业结果写入新的bigquery表。我希望我的查询应该是基于一些单位值的动态的(使用外部动态参数),我是从google云调度器(它包含身体部分的一些参数值(使用post方法和http调用)触发这个云功能),谁能建议如何将这个参数值从云调度器的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"发布于 2019-09-19 15:03:43
最好的方法是使用pub/sub保持Google的所有内部:
Cloud使用云功能所需信息的有效负载对象向Pub/Sub发送消息。云功能应该在Pub/Sub主题之外触发,然后您可以访问您所引用的动态部分所需的message.attributes。
Cloud Scheduler --发布到-> Pub/Sub Topic --订户推送-> Cloud Function
如果您想继续使用HTTP,可以按照这里描述如何使用函数中的POST。您正在使用requests模块来提取在Cloud作业中传递的body属性。
https://stackoverflow.com/questions/58013336
复制相似问题