【问题标题】:AWS Cloudformation Lambda and Event Rule - Lambda not getting triggered with s3 event with a suffix?AWS Cloudformation Lambda 和事件规则 - Lambda 没有被带后缀的 s3 事件触发?
【发布时间】:2021-08-25 04:44:53
【问题描述】:

我已经使用 cloudformation 创建了一个 lambda 和 s3 事件规则,但是 lambda 没有按照配置的规则被触发。 根据事件规则,每当在具有特定后缀的特定 s3 存储桶中创建文件时,我希望 lambda 触发。 规则被授予调用 lambda 的权限。但是当我上传一个文件(例如,portfolio.testSuffix)时,lambda 没有被触发。

  EventRule:
    Type: AWS::Events::Rule
    Properties:
      Description: 'test s3 event'
      EventPattern:
        source:
          - 'aws.s3'
        detail:
          eventSource:
            - 's3.amazonaws.com'
          eventName:
            - 'CopyObject'
            - 'PutObject'
          requestParameters:
            bucketName:
              - 'test-bucket'
            key:
              - |
               {"suffix": ".testsuffix"}
      State: 'ENABLED'
      Targets:
        -
          Arn: !GetAtt TestLambda.Arn
          Id: 'TestLambdaTargetId'
  LambdaInvokePermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: 'lambda:InvokeFunction'
      FunctionName: !GetAtt TestLambda.Arn
      Principal: 'events.amazonaws.com'
      SourceArn: !GetAtt EventRule.Arn        
          

谁能帮助确定此配置中的问题以及为什么 lambda 没有被触发?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-event-bridge


    【解决方案1】:

    根据 Eventbridge documentation,不支持 suffix 模式。

    key:
     - |
      {"suffix": ".testsuffix"}
    

    以下是 EventBridge 中可用的所有比较运算符的列表:

    Null、Empty、Equals、And、Or、Not、Numeric(等于)、Numeric(范围)、Exists、不存在、开头

    也见Content-based filtering

    【讨论】: