程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限?

开发过程中遇到与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限的问题如何解决?下面主要结合日常开发的经验,给出你关于与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限的解决方法建议,希望对你解决与 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 框架,尽管同样适用于那里:

  1. 我仔细阅读了存储库 README 并遵循了所有说明。
  2. 我登录了 AWS 控制台,发现我认为是主要问题,但实际上是第三个问题; Lambda@Edge 仅配置了基本的 CloudWatch Logging 权限。我使用所有必要的权限对其进行了更新,同时确保采用最佳做法
  3. 更新您的 Lambda 后,请确保将其部署到 Lambda@Edge(在操作菜单下)
  4. 然后我导航到 CloudWatch 并检查了正确区域中的日志,并在调用 API 后发现了错误。
  5. 不知何故,我的 DynamoDB 表被删除或未正确复制,因此我使用 npm run infra 和之后从我的 SDK 重新部署了它们。

这种体验总是很好的。您在代码中遇到真正愚蠢的错误绝不是无敌的。在 99% 的情况下,如果您被困住并认为它很复杂并且修复它是不切实际的,请退后一步并问:“最愚蠢的事情是什么?”

而且总是那样。

大佬总结

以上是大佬教程为你收集整理的与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限全部内容,希望文章能够帮你解决与 CloudFront 分配关联的 Lambda 函数无效或没有所需的权限所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: