大佬教程收集整理的这篇文章主要介绍了与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以作为一个借口,我几乎不知道该怎么做。我已经研究了大约两个小时,通常我会继续前进,但我发现的信息都没有用。我怀疑这与 YAML (serverless.yml) 文件有关,但我不确定。我对该文件进行了多次更新,因此我将发布初始代码和当前代码,尽管没有任何区别。代码在开发中完美无缺,但在生产中会出错。您可以看到 https://www.evote.space 复制此内容。
当前
@H_909_9@myNextApplication: service: myservice component: "@sls-next/serverless-component@1.18.0" provIDer: name: aws runtime: nodeJs12.x stage: dev profile: eVote iam: role: rolenamegoesherebutnotonstackoverflow inputs: domain: "eVote.space" functions: createuser: handler: data.createuser readtable: handler: data.readtable resources: resources: userstable: Type: AWS::DynamoDB::table PropertIEs: tablename: Users AttributeDeFinitions: - Attributename: userHash AttributeType: N KeyscheR_398_11845@a: - Attributename: userHash KeyType: HASH Voterstable: Type: AWS::DynamoDB::table PropertIEs: tablename: Voters AttributeDeFinitions: - Attributename: VoterHash AttributeType: N KeyscheR_398_11845@a: - Attributename: VoterHash KeyType: HASH electionstable: Type: AWS::DynamoDB::table PropertIEs: tablename: Elections AttributeDeFinitions: - Attributename: electionHash AttributeType: N KeyscheR_398_11845@a: - Attributename: electionHash KeyType: HASH ballotstable: Type: AWS::DynamoDB::table PropertIEs: tablename: Ballots AttributeDeFinitions: - Attributename: ballotHash AttributeType: N KeyscheR_398_11845@a: - Attributename: ballotHash KeyType: HASH
初始(首次部署时出错)
@H_909_9@myNextApplication: service: myservice component: "@sls-next/serverless-component@1.18.0" provIDer: name: aws runtime: nodeJs12.x stage: dev profile: eVote inputs: domain: "eVote.space"
我的代码库很大,由许多页面和组件组成。到目前为止,我所做的只是一个登录功能,但在注册页面上,它调用 API 返回用户(用于重复电子邮件验证),它返回我们非常熟悉的错误“意外的令牌
503 错误 无法满足请求。 与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限。我们目前无法连接到此应用程序或网站的服务器。可能有太多流量或配置错误。稍后重试,或联系应用或网站所有者。 如果您通过 CloudFront 向客户提供内容,您可以通过查看 CloudFront 文档找到故障排除和帮助防止此错误的步骤。 由云前沿 (CloudFront) 生成 请求 ID:No0_qVJ3gcopg48rMXqvgyipx4wKWmV-hRewQblZ-loyaaiVJLqGIA==
是的,如果你能帮忙,请帮忙。
编辑: 导致问题的代码是以下块
NewUser.geTinitialProps = async ({ req }) => {
if (req) {
// this is server sIDe
return {
users: await data.readtable("Users")
};
} else {
// we are clIEnt sIDe
const response = await fetch("/API/users");
return { users: await response.Json() };
}
};
处理这个的 API 最初是这样的:
import data from "../../../data"
export default async (req,res) => {
console.log("/API/users HIT!");
res.status(200).Json(await data.readtable("Users"));
};
但我对其进行了更改,以便可以将其标记为 lambda,因此现在看起来像这样(尽管没有任何区别):
import data from "../../../data";
module.exports.read = async (event,context,callBACk) => {
console.log("/API/users HIT!");
callBACk(null,{statusCode: 200}).Json(await data.readtable("Users"));
}
因此,经过仔细研究后,@R_612_10673@下操作,这显然是一个非常普遍的问题,因此我建议其他遭受此问题困扰的人完全按照以下步骤操作。请记住,这与 serverless-nextjs 组件有关,而不仅仅是 serverless 框架,尽管同样适用于那里:
这种体验总是很好的。您在代码中遇到真正愚蠢的错误绝不是无敌的。在 99% 的情况下,如果您被困住并认为它很复杂并且修复它是不切实际的,请退后一步并问:“最愚蠢的事情是什么?”
而且总是那样。
以上是大佬教程为你收集整理的与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限全部内容,希望文章能够帮你解决与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。