Firebase云功能部署错误,错误代码为“;“无钥匙”;
我试图从firebase CLI(版本8.12.1)部署我的一个功能,但它一直失败。 这个功能几周没变了,所以我有点困惑为什么它现在会失败 来自CLI的错误 函数[http api-(europe-west1)]:部署错误。 生成失败:生成错误详细信息不可用。请检查&advancedFilter=resource处的日志。类型%3Dbuild%0Aresource.labels.build\u id%3Dfeb2697d-29b4-4ab7-9b84-90d9f847be42%0AlogName%3Dprojects%2Vestico dev%2Flogs%2Fcloudbuild 来自云控制台的日志 第3步-“恢复者”:从缓存中恢复“google.nodejs.functions framework:functions framework”的数据 步骤3-“恢复程序”:\u001b[31;1mERROR:\u001b[0还原失败:还原数据:获取https://storage.googleapis.com/eu.artifacts..appspot.com/containers/images/sha256:484d08dfc6a8f356c34a86fa4440fedf86f4fc398967eea66e4aab4e9ee81e3d?access_token=REDACTED: 不支持的状态代码404;正文:Firebase云功能部署错误,错误代码为“;“无钥匙”;,firebase,google-cloud-functions,Firebase,Google Cloud Functions,我试图从firebase CLI(版本8.12.1)部署我的一个功能,但它一直失败。 这个功能几周没变了,所以我有点困惑为什么它现在会失败 来自CLI的错误 函数[http api-(europe-west1)]:部署错误。 生成失败:生成错误详细信息不可用。请检查&advancedFilter=resource处的日志。类型%3Dbuild%0Aresource.labels.build\u id%3Dfeb2697d-29b4-4ab7-9b84-90d9f847be42%0AlogName
NoSuchKey
指定的密钥不存在。没有此类对象:eu.artifacts..appspot.com/containers/images/sha256:484d08dfc6a8f356c34a86fa4440fedf86f4fc398967eea66e4aab4e9ee81e3d
已完成步骤#3-“恢复器”
错误:生成步骤3“eu.gcr.io/fn img/BuildPack/nodejs10/builder:nodejs10\u 20201005\u 20\u RC00”失败:步骤退出,状态为非零:46
有趣的一点可能是上面的错误:
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Details>No such object: eu.artifacts.<project-id>.appspot.com/containers/images/sha256:484d08dfc6a8f356c34a86fa4440fedf86f4fc398967eea66e4aab4e9ee81e3d</Details>
</Error>
builder所指的键是什么?@appspot.gserviceaccount.com
可以通过角色cloud Functions Admin
和Editor
访问云函数
编辑
通过firebase部署进行部署--仅功能:
该函数使用@googlecloud/storage
获取存储资源的公共url
我正在加载如下配置的服务帐户:
const devServiceAccount=require(“../../service accounts/dev.json”);
const prodServiceAccount=require(“../../service accounts/prod.json”);
导出常量getAdminConfig=():(AppOptions |未定义)=>{
const baseConfigEnv=process.env.FIREBASE\u CONFIG;
如果(!baseConfigEnv){
console.error(“无firebase配置环境”);
返回未定义;
}
const app=functions.config().app;
如果(应用===未定义){
控制台错误(“无firebase应用程序配置”);
返回未定义;
}
const serviceAccount=app.environment=='dev'?devServiceAccount:prodServiceAccount;
const adminConfig=JSON.parse(baseConfigEnv)作为AppOptions;
adminConfig.credential=credential.cert(serviceAccount);
返回adminConfig;
}
这里使用云存储
const选项={
行动:“读”,
过期日期:Date.now()+1000*60*60//1小时
}作为GetSignedUrlConfig;
const file=bucket.file(路径);
filePathPromises.push(file.getSignedUrl(选项))
});
我的文件夹结构如下
+ functions
+ lib
+ function.js
+ service-accounts
+ dev.json
+ prod.json
+ src
+ function.ts
考虑到项目中所有函数的文件都加载在getAdminConfig()
中,我排除了服务帐户文件是问题所在
更新10/13/20
我已经验证了上载到GCF存储容器的文件。JSON密钥在那里并且位于正确的位置。路径匹配,因此应该在GCF运行时找到它们。Firebase云函数或GCF中似乎存在间歇性问题。我刚刚再次运行了
Firebase部署--仅函数
,并且部署成功失败。为下一个遇到此问题的灵魂添加提示。这似乎是由于还原/回滚过程中缺少/无法访问文件造成的
我通过以下方法成功地解决了该问题:
>firebase部署
您好@bhr通常
NoSuchKey
错误与系统中不存在的文件有关-在这种情况下,与您的功能有关。考虑到这一点,您可以分享您用于部署功能的命令以及该功能应该执行的操作吗?@gso_grabriel:我也是这么想的。我不确定哪个文件不能执行但是被发现。我为上述问题添加了更多上下文。我也有同样的问题。你确定你除了等待之外什么都没做吗?:)我刚刚重新部署,它对我有效。检查后,找不到与关键文件相关的任何更改。部署函数对你有用吗?是的,几天前工作过,现在我无法重新部署相同的代码,但是我们遇到了上述问题(我又遇到了另一个函数的问题。这是因为trickI在为我的容器映像创建生命周期删除规则后,在部署Google云函数时遇到了NoSuchKey错误。我需要删除我的实际云函数吗?这会不会破坏我的应用程序?是的,删除你的函数会加快速度。)在新部署完成之前,很少会中断功能。抱歉,我不知道还有其他解决方案。您是否从Firebase存储中删除了旧工件?问题可能与此有关。