问题描述
当您在 Cloud Scheduler 中创建新的 Cron 作业时:
为了传递参数值,我应该在 body
字段中添加什么:
该字段的规范是什么?我应该在那里写 JSON
吗?
假设我想传递这个 JSON
对象:
{
"foo": "bar"
}
"Content-Type": "application/json"
是否自动添加?
解决方法
您可以在正文字段中提供您认为合适的信息。
至少在 AppEngineAppTarget
的情况下 - HttpTarget
的行为可能是相同的,如描述 headers
字段时 documentation 中所示,它们表明如果作业有正文,则 Cloud Scheduler 会设置以下标头:
Content-Type:默认情况下,Content-Type 标头设置为“application/octet-stream”。可以通过在创建作业时将 Content-Type 显式设置为特定媒体类型来覆盖默认值。例如,Content-Type 可以设置为“application/json”。 ...
AFAIK,无法从 Google Cloud Web 控制台提供 Content-Type
或任何其他自定义标头,但您可以根据需要使用 gcloud
CLI。请参阅relevant documentation。请特别注意 OPTIONAL FLAGS
部分,以及其中的 --headers
、--message-body
和 --message-body-from-file
标志。您的命令应该类似于:
gcloud scheduler jobs create http job-name \
--schedule="0 */3 * * *" \
--uri="http://your.url.com" \
--http-method=POST \
--headers="Content-Type: application/json" \
--message-body="{\"field1\":\"value1\",\"field2\":\"value2\"}}"