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

AWS Cloudwatch事件规则-调用Lambda-带参数

韦嘉颖
2023-03-14

我正在使用AWS Clouwatch事件规则调用一个基于Cron调度的python lambda函数,该函数运行良好。现在,我可以使用AWS Cloudformation将参数从cloudwatch偶数规则传递到这个lambda函数中吗?请你带路好吗?请参见以下我的cfn模板:

Step1 : parameter.Schedule=cron(0 21 ? * * *)

Step 2: "Schedule": {
            "Description": "Schedule for the Lambda function (cron or rate)",
            "Type": "String"
          },


Step 3:  "funcInvokeRule": {
            "Type": "AWS::Events::Rule",
            "Properties": {
                "ScheduleExpression": {"Ref": "Schedule"},
                "Targets": [{
                    "Id": "funcScheduler",
                    "Arn": {"Fn::GetAtt": ["Function","Arn"]}
                }]
            }
        },

共有2个答案

夏侯阳
2023-03-14

遵循AWS文档,您的云形成资源可以简单到:

Resources:  
  EventRule:
    Type: AWS::Events::Rule
    Properties:
      Name: {EVENTNAME}
      Description: "ScheduledRule"
      ScheduleExpression: cron(0 21 ? * * *)
      State: "ENABLED"
      RoleArn: {ROLE}

将Name和RoleArn替换为您自己的值。

注意:名称不是必需的参数,但有助于识别您的资源。但是,根据文档,如果替换cloudformation模板中的资源,则需要指定一个新名称。

如果您还打算使用serverless为您的lambda使用云形成,那么我个人会通过权限将规则附加到lambda,这样您就可以在规则上附加多达5个触发器,而无需每次都修改规则目标。

  Lambda:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName:{LAMBDANAME}
      Description: {Description}
      Role: {Role}
      Handler: {FileName}.lambda_handler
      Runtime: {x}
      CodeUri: {ObjectPath}
      MemorySize: {x}
      Timeout: {x}
  Lambdatrigger:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref Lambda
      Action: lambda:InvokeFunction
      Principal: events.amazonaws.com
      SourceArn: !Ref EventRule
羊舌昆杰
2023-03-14

AWS::Events::Rule的属性类型具有输入参数

传递给目标的有效JSON文本。如果使用此属性,则不会将事件文本本身中的任何内容传递给目标。

还有一个InputTransex,您可以使用它来转换现有输入,例如,向其添加额外的值。

使您能够根据某些事件数据向目标提供自定义输入的设置。您可以从事件中提取一个或多个键值对,然后使用该数据向目标发送自定义输入。

 类似资料:
  • 我的问题是: 在Drools规则中,有没有一种方法可以拦截“成功”事件?为了更好地解释。。。有一种方法可以在规则的所有条件都为真时调用侦听器? 注意:我不想设置一个全局对象(在会话上)来管理规则的“然后”子句中的这个条件。 我正在寻找一个已经在Drools上实现的解决方案 规则示例

  • 我创建了具有以下事件模式的CloudWatch规则: 其思想是,每当集群的状态发生变化时,它都会调用lambda函数。 现在的问题是,当它调用lambda函数时,会出现以下错误: 带代码: 那么,我应该使用哪个类来解析CloudWatch规则事件? 谢谢你。

  • 我有一个附加在CloudWatch事件上的lambda,一旦事件触发,lambda将通过以下代码删除规则: 提前感谢!

  • 我正在创建一个Cloudwatch事件规则,如果步骤函数进入故障或超时状态,它应该会触发lambda。云观察事件规则将参数传递给lambda,这将发送一封自定义的SNS电子邮件。我正在尝试将输入参数的值从我在云形成模板中设置的参数传递到Cloudwatch事件规则中。我无法让Cloudform将参数值提取出来,将它们放入Cloudwatch事件规则输入参数中。CF接受我在JSON中给出的文字值并将

  • 我正在尝试设置Cloudwatch事件规则来通知任何AWS IAM操作,例如DeleteUser或CreateUser。但是当我尝试创建事件模式时,我在服务名称列表中找不到IAM,即使当我在AWS留档中搜索时,我找不到Cloudwatch事件规则不支持IAM的提及。所以我尝试创建一个自定义事件,但我没有收到来自SNS(我的目标)的任何电子邮件,是的,我确保Cloudwatch具有调用SNS的权限,

  • 我已经使用配置了一个CloudWatch规则以在给定时间运行,但Lambda只是有时被调用。我已经确保Lambda执行角色具有适当的权限,有时CloudWatch规则会正确运行,调用我的Lambda函数。 例如,我以编程方式创建了一个规则,启用了它,并使用Python中的boto3客户端添加了一个目标,然后当角色执行时,它会执行,并在CloudWatch度量中显示“调用错误”。我采用了同样的规则,