AWS CloudWatch事件不会触发Lambda函数

时间:2020-01-21 02:12:27

标签: amazon-web-services aws-lambda amazon-cloudwatch

我无法触发我的AWS Lambda函数。

当我单击 Test 时,该函数运行良好,但是我创建了一个新的计划规则,该规则每分钟触发一次Lambda函数。它只能工作一次,然后再也无法工作。我也尝试过使用Cron,结果相同。

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

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

02:07:40
END RequestId: |numbers|

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

作为旁注,我已经在控制台上完成了所有操作,并且不确定如何正确使用CLI。任何帮助都会很棒。谢谢。

2 个答案:

答案 0 :(得分:1)

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

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

def lambda_handler(event, context):

    print ('Within function')

然后,确保已使用AWSLambdaBasicExecutionRole策略或授予访问CloudWatch Logs权限的其他策略为该功能分配了IAM角色:

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

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

这有望正常运行。然后只需比较配置以找出为什么现有功能无法每分钟成功运行的问题。您还可以查看监视标签,查看是否有任何执行产生错误。

答案 1 :(得分:0)

好的,这是我做错了的地方:

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