我尝试如下直接执行云函数,但可能会出现问题并遇到语法错误。
-- command
gcloud functions call(cf-pubsub --region=asia-northeast1) --data
'{
"data": {
"bucket":"bucket_name",
"name":"filename.json"
}
}'
-- error
bash: syntax error near unexpected token `('
bash: {
"data": {
"bucket":"bucket_name",
"name":"filename.json"
}
}
}: No such file or directory
我们在GCP中有数十亿个目标文件,读取所有blob_list需要太多时间,所以我想直接通过命令执行它们。
有没有更好的方法和正确的语法,请告诉我。
您所遵循的命令语法是错误的。 call(cf-pubsub --region=asia-northeast1) 不应用括号括起来。不要忘记,如果您使用的是 Cloud Functions gen 2,则需要传递 --gen2 参数。
对于你的情况应该是,
gcloud functions call cf-pubsub --region=asia-northeast1 --data '{
"data": {
"bucket":"bucket_name",
"name":"filename.json"
}
}'
您可以通过文档访问您共享的命令的文档。这样的文档还可以帮助您通过填补简单的空白来编写命令。
考虑到您有“GCP 中的数十亿个目标文件”需要处理,最好的方法是仅将存储桶名称作为参数传递给函数,函数将逐个列出并处理文件在一个循环内。然后,每个已处理的文件需要移动到另一个文件夹或存储桶,以将其保留为已处理文件的记录器。如果 Cloud Functions (gen2) 1 小时执行时间不够,您可以链接函数再次调用,直到函数返回所需/适当的值。