gpt4 book ai didi

amazon-web-services - AWS Lambda@Edge 不记录

转载 作者:行者123 更新时间:2023-12-03 15:13:55 24 4
gpt4 key购买 nike

我已将查看器请求和源响应 Lambda 函数部署到 CloudFront 分配,这些函数正在触发,但未记录到 CloudWatch。我花了大量时间研究这个主题,并浏览了其他帖子的所有建议,包括:

  • 检查所有区域的日志,因为我知道它们 CloudWatch 日志将在 labmda@edge 函数运行的区域中创建。没有登录任何一个。
  • 我已检查 AWSServiceRoleForCloudFrontLogger 角色是否存在。

  • 有趣的是,当我故意将错误编码到一个 Lambda 函数中时,我确实在名为 /aws/cloudfront/LambdaEdge/<cloudfront distribution id> 的组中创建了日志。包含错误日志,但是这里没有来自 console.log 语句的输出。

    在我的一生中,我无法弄清楚如何将所有请求(成功和失败)记录到 CloudWatch,其中包含使用 console.log() 的调试语句。

    AWSServiceRoleForCloudFrontLogger 包含单个策略 AWSCloudFrontLogger :
        "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Action": [
    "logs:CreateLogGroup",
    "logs:CreateLogStream",
    "logs:PutLogEvents"
    ],
    "Resource": "arn:aws:logs:*:*:/aws/cloudfront/*"
    }
    ]
    }

    编辑:

    以下是 AWS 支持建议的 AWS 角色。我可以确认这有效并解决了问题。
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Action": [
    "logs:CreateLogGroup",
    "logs:CreateLogStream",
    "logs:PutLogEvents"
    ],
    "Resource": [
    "arn:aws:logs:*:*:*"
    ]
    }
    ]
    }```

    最佳答案

    问题很可能是 Lambda 没有将日志输出到 CloudWatch 的权限。

    你能仔细检查一下 Lambda 函数执行角色的权限吗?

    相关链接:Can't get AWS Lambda function to log (text output) to CloudWatch

    说明

    所以这里有两种日志,因此您必须在两个不同的地方为 CloudWatch 提供权限。

  • 您放入 Lambda 函数中的日志(使用 console.log),因为这些日志将由函数发布到 CloudWatch,函数执行角色应该具有 permission到 CloudWatch。无论谁触发 Lambda 函数,都是如此。
  • 现在来 L@E,有时您最终可能会以 not valid as per CloudFront 的方式修改请求/响应。 .在这些场景中,只有 ClodFront 知道您搞砸了(您的 Lambda 函数不知道这一点),并且它以日志的形式将这些知识发布到 CloudWatch。现在因为这是一个不同的实体,它需要它自己的 permissions将日志推送到 CloudWatch(您已通过 AWSServiceRoleForCloudFrontLogger 提供)。
  • 关于amazon-web-services - AWS Lambda@Edge 不记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56989686/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com