使用gcloud functions deploy更新现有函数时总是创建新函数的问题
解决Cloud Functions Gen2 CLI更新内存时创建新函数的问题
你遇到的问题核心在于:更新现有Cloud Functions Gen2时,必须保证CLI命令的关键参数完全匹配已部署函数的配置,任何参数不匹配都会触发创建新函数。
正确操作步骤
先确认现有函数的完整配置,避免参数不匹配:
gcloud functions describe {func_name} --gen2 --project={proj_name} --region={region_name}执行后会输出函数的触发器类型、运行时、区域等核心信息,这些参数必须在后续更新命令中保持一致。
执行更新内存的命令,仅保留必要的匹配参数+内存配置:
假设你的函数是HTTP触发器、nodejs18运行时、指定区域和项目,命令应为:gcloud functions deploy {func_name} --gen2 --project={proj_name} --region={region_name} --memory=512MB --trigger-http --runtime nodejs18注意:如果不需要更新代码,不要加
--source=.,这个参数会强制上传本地代码,若本地配置和云端有差异也可能导致创建新函数。
常见踩坑点
- 遗漏
--region:GCP的默认区域如果和函数所在区域不一致,会直接在默认区域创建新函数 - 触发器参数不匹配:比如现有函数是HTTP触发器,但命令漏了
--trigger-http,或者误用了其他触发器参数 - 项目参数错误:没指定
--project时会用gcloud默认项目,若和函数所在项目不同,会在默认项目下创建新函数 - 函数名称拼写错误:GCP对函数名称的大小写、字符严格区分,哪怕差一个字符都会视为新函数
你通过控制台能成功更新,是因为控制台直接读取现有函数的所有配置,只修改内存参数;而CLI需要你显式指定所有关键参数来匹配目标函数,否则会默认创建新函数。
内容的提问来源于stack exchange,提问作者Ariel M
相关产品推荐
相关产品推荐

