我正在测试一个云函数。
当我从";测试";选项卡,在线,我将json字典粘贴为参数,作为"中cloud函数的请求变量传递;触发事件";编辑器为:
{"api_key":"MY_API_KEY"}
(MY_API_KEY将替换为纯文本键(,然后函数将运行到底。
在bash中,使用gcloud
,相同的函数失败:
gcloud functions call MY_CLOUD_FUNCTION --data '{"api_key":"$API_KEY"}'
gcloud functions call MY_CLOUD_FUNCTION --data '{"api_key":"$API_KEY"}' ERROR: (gcloud.functions.call) ResponseError: status=[404], code=[Ok], message=[Function MY_CLOUD_FUNCTION in region us-central1 in project MY_CLOUD_PROJECT does not exist]
这很可能不是触发事件的问题,触发事件恰好是args的一部分,但不应该在这里发挥作用。这是不同地区的问题。gcloud
期望默认区域us-central1
,而我的函数是europe-west3
(来自"Details"选项卡(。
如何告诉gcloud
使用函数的区域,而不是默认区域?或者还有什么办法可以解决这个问题?
gcloud
假定默认值(可以使用gcloud config
获取|设置(
在这种情况下,您应该将标志--region=europe-west3
添加到您的命令中,以指定想要的区域,即:
REGION="europe-west3"
gcloud functions call your-function
--region=${REGION}
--data="{"api_key":"${API_KEY}"}"
您可以(希望(通过以下方式验证此行为:
gcloud config list
[core]
account = your@email.com
Your active configuration is: [default]
注意以上命令不包括
functions/region
;我怀疑这是因为us-central1
是默认值。
gcloud config get-value functions/region
us-central1
我不建议在gcloud config
中存储全局状态(部分原因是它会导致这种类型的混乱(,但是,您也可以:
gcloud config set functions/region europe-west3
Updated property [functions/region].
gcloud config get-value functions/region
europe-west3
gcloud functions call your-function
--data="{"api_key":"${API_KEY}"}"