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

AWS CloudWatch事件不会触发Lambda函数

白子明
2023-03-14

触发AWS Lambda函数时遇到问题。

当我单击Test时,该函数工作得非常好,但我创建了一个新的计划规则,该规则每分钟触发Lambda函数。它工作一次,然后再也不会工作了。我还尝试使用Cron,结果相同。

日志应输出打印功能,但它们会读取以下内容:

02:07:40
START RequestId: |numbers| Version: 8

02:07:40
END RequestId: |numbers|

我单击了“CloudWatch Events将为目标添加必要的权限,以便在触发此规则时调用它们”,所以我怀疑我的权限不是问题。

顺便说一句,我已经在控制台上完成了所有工作,但不确定如何正确使用CLI。任何帮助都会很好。非常感谢。

共有2个答案

华子昂
2023-03-14

好吧,这就是我出错的地方:

根据这个答案:https://forums.aws.amazon.com/thread.jspa?threadID=264583AWS只运行一次整个S3 zip包。我需要将所有代码放入处理程序中以修复此问题。

欧阳斌
2023-03-14

最好的方法是从简单开始,然后逐步达到最终目标。

首先创建一个AWS Lambda函数,该函数只需将某些内容打印到日志文件中。这是Python中的一个示例:

def lambda_handler(event, context):

    print ('Within function')

然后,确保已使用AWSLambdaBasicExecutionRole策略或其他授予对CloudWatch日志访问权限的策略为该函数分配了IAM角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}

然后,将CloudWatch Events配置为每分钟触发一次函数,并检查Amazon CloudWatch Logs中的日志文件以确认函数正在执行。

这将有望正常工作。然后,只需比较配置,找出现有功能没有每分钟成功运行的原因。您还可以查看“监视”选项卡,查看是否有任何执行产生了错误。

 类似资料:
  • 我实现了AWS Eventbridge规则和Lambda函数的基本组合作为其目标。假设该规则基于所有AWS自动缩放事件创建一个事件,并调用Lambda。当触发现有ASG的缩放操作时,此操作效果良好,但当创建具有相同前缀的新ASG时,规则不会做出反应。旧ASG名称:test-ASG-lc-123新ASG名称:test-ASG-lc-124 甚至可以使用通配符吗?

  • 我部署了一个用Python2编写的服务。7使用AWS Lambda,它是关于从一些页面提取数据并将结果发送到web应用程序。该服务由AWS CloudWatch事件触发(固定速率为5分钟)。 但是,我发现有时服务会一次触发两次。我得到这个是因为有两个日志流打印了相同的数据和结果,但具有不同的Request estID。并且数据库有重复的数据,这表明两者都成功工作。看起来服务几乎无缘无故地同时触发了

  • 我正在使用aws lambda函数将一个桶中上传的wav文件转换为mp3格式,然后将文件移动到另一个桶中。它工作正常。但触发有个问题。当我上传小的wav文件时,lambda函数被调用一次。但是当我上传一个大尺寸的wav文件时,这个功能会被触发多次。 我已经谷歌了这个问题,发现它是无状态的,所以它会被多次调用(不确定这个触发器是针对多次上传还是同一个上传)。 https://aws.amazon.c

  • 问题内容: 对于jQuery,这是一个非常奇怪的问题。我正在加载一个div 页面加载。每条记录都是表格数据,并带有与之关联的“删除” ajax函数。当页面加载并单击“删除”链接时,ajax调用会触发。但是,一旦触发事件,就会从ajax调用返回数据,并且div中会填充数据(但页面不会刷新或重新加载)。当我再次单击链接时,ajax脚本将不会触发。这是我的代码: 问题答案: 当您删除元素然后通过java

  • 我想在点击某个div(“.checker”)后触发点击输入事件。换句话说,点击'.checker'将模拟点击复选框上的点击事件,远程检查它。 我写的代码可以工作,但click只有在第二次单击后才触发,第一次单击失败时才触发。这种情况甚至不会发生在'.checker'上,也会发生在checkbox上。 下面的所有HTML都包装在jquery折叠菜单中。单击“H3”后,“.sub-tree-wrap”

  • 我已经在Terraform中设置了以下内容。所以有两条事件规则,上午8点开始\u事件,下午6点停止\u事件。 每个事件都将一个操作传递给lambda 这很有效 我面临的问题是,我无法让Terraform将start\u事件与lambda函数相关联。我进入AWS控制台,可以手动将CloudWatch start\u事件触发器添加到lambda函数中。 如果我有start_event资源 它会抱怨语句