当前位置: 首页 > 知识库问答 >
问题:

无服务器框架lambda函数中cloudfront出错

仲孙景胜
2023-03-14

我正在尝试部署一个简单的Slack lambda api,它使用@Slack/client库从特定通道中删除成员和固定消息。我遇到的问题是函数没有问题地执行,并且它没有问题地删除通道成员,但是我的Lambda函数不断返回:

HTTP/1.1 502 Bad Gateway
...
X-Cache: Error from cloudfront
...

{
    "message": "Internal server error"
}

作为反应体。当我使用SLS logs-f api检查日志时,也没有看到任何错误。我看到我的函数的console.log成功执行。

provider:
  name: aws
  runtime: nodejs10.x
  profile: serverless

functions:
  api:
    handler: handler.api
    timeout: 30
    events:
      - http:
          method: POST
          path: clean
module.exports.api = async (event, context, callback) => {
  let channel = JSON.parse(event.body).ctf
  let id = await findChannelId(channel)
  removeMembersFromChannel(id[0]).then(() => {
    removePinsFromChannel(id[0]).then(() => {
      callback(null, {
        statusCode: 200,
        body: JSON.stringify({
          message: `Cleaned ${channel} ${id}`,
        }, null, 2),
      })
    })
  })
};
    null
  • 为什么会出现此错误,以及如何解决此错误?
  • 在处理程序函数中引用了这一点之后,我使用了json.stringify。使用Serverless-Framework,如何避免使用Lambda代理集成?

共有1个答案

柯昱
2023-03-14

请添加console.log通过cloudwatch进行详细的日志记录,并使用X射线。CloudFront的一些典型问题:-传播到边缘位置的时间太长(可能需要重新创建cdn)-来自被调用区域中lambda@edge的日志

 类似资料:
  • 我最近探索了serverless,我想为我的应用程序创建一个“简单”的后端。它应该像CRUD连接到DynamoDB,就像这里很好地显示的那样。然后转换成使用Cognoto记录用户。链接1和链接2( 在我的实施过程中,我遇到了一些问题,我想请您帮助,因为我不喜欢使用我只复制的东西,也不知道它是如何工作的: > 为什么我不需要设置CORS(标头)时初始化lambdas与无服务器,而不是在亚马逊控制台中

  • 如何将托管策略附加到lambda函数? 我试过: 但这导致了以下错误: 预配堆栈时发生错误:检测到GaDasheretLambdaFunction-1验证错误:值'arn: aws: iam::aws:策略/Amazon CognitoReadOnly'at'角色'未能满足约束:成员必须满足正则表达式模式: arn: aws: iam::\d{12}:角色/?[Z_0-9 =,.@- _/]。

  • 如您所见,我正在使用codePipeline和codeBuild自动化部署。我的后端基于无服务器框架,它在触发命令时部署lambda函数。这就是我没有使用codeDeploy进行传统部署的原因<代码>构建规范。yml文件如下所示: 现在,我有3个关于CodeBuild和Serverless的问题: 问题1:命令依赖于一个名为的文件,其中包含数据库密码等秘密。此文件将不会被签入git。你认为在cod

  • 编辑:我需要通过有效载荷传递一些敏感信息。这可以是一个字母数字值。例如{“sender”:“+123”,“secret”:“encrypted_value”}客户端和服务器应该共享一个密钥,客户端可以使用该密钥对信息进行加密,服务器(lambda函数)应该对其进行解密。 任何建议都会很好!谢谢!

  • 我们正在评估是否在一些新的AWS应用程序基础架构中使用无服务器。我们大量使用Cloudformation(由Ansible部署),因此我们需要能够清晰地引用现有Cloudformation堆栈的输出——一个直接的例子是获取现有AWS网络基础设施的子网ID,以供lambda函数使用。 在浏览了很多次之后,我还没有看到一个现成的方法来实现这一点。我们现有的Cloudformation堆栈的命名方式是,

  • 有没有办法从无服务器上启用X射线。Lambda函数的yml?我已在文件中添加了X射线权限: 但高级跟踪仍需要在AWS控制台中手动启用。