【问题标题】:Defining multiple ARNs which can trigger a Lambda function定义多个可以触发 Lambda 函数的 ARN
【发布时间】:2018-07-01 13:42:41
【问题描述】:

这是我在 AWS::Lambda::EventSourceMapping 的 AWS 文档中看到的示例 CloudFormation 语法:

Type: "AWS::Lambda::EventSourceMapping"
Properties: 
  BatchSize: Integer
  Enabled: Boolean
  EventSourceArn: String
  FunctionName: String
  StartingPosition: String

假设我有一组 DDB Stream ARN,我想将其用作一个 lambda 函数的触发器(而不是一个 ARN 作为触发器)。我试图这样定义这种关系:

Parameters:
   DDBStreamARN:
     Type: String
     Default: arn:aws:dynamodb:us-west-2:someId1
     AllowedValues:
       - arn:aws:dynamodb:us-west-2:someId1
       - arn:aws:dynamodb:us-west-2:someId2
       - ...
     Description: ARNs for the DDB Streams

Resources:
  RegistrationRequestStreamMapping:
     Type: AWS::Lambda::EventSourceMapping
     Properties:
       BatchSize: 70
       EventSourceArn:
         Ref: DDBStreamARN
       FunctionName:
         Fn::GetAtt:
           - TestLambdaFunction
           - Arn
       StartingPosition: TRIM_HORIZON
       Enabled: True

但语法似乎不起作用,因为只有默认值 (arn:aws:dynamodb:us-west-2:someId1) 用作触发器,而其他 ARN 不会触发 lambda 函数。有关如何解决此问题的任何建议?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-dynamodb amazon-cloudformation amazon-dynamodb-streams


    【解决方案1】:

    部署您的 CFT 两次。一次使用arn:aws:dynamodb:us-west-2:someId1,第二次使用arn:aws:dynamodb:us-west-2:someId2 作为DDBStreamARN 参数的值。

    【讨论】:

      【解决方案2】:

      您可以为同一个 lambda 定义多个 AWS::Lambda::EventSourceMapping。

      例如;

      RegistrationRequestStreamMapping1:
           Type: AWS::Lambda::EventSourceMapping
           Properties:
             BatchSize: 70
             EventSourceArn:
               Ref: DDBStream1ARN
             FunctionName:
               Fn::GetAtt:
                 - TestLambdaFunction
                 - Arn
             StartingPosition: TRIM_HORIZON
             Enabled: True
      
      RegistrationRequestStreamMapping2:
           Type: AWS::Lambda::EventSourceMapping
           Properties:
             BatchSize: 70
             EventSourceArn:
               Ref: DDBStream2ARN
             FunctionName:
               Fn::GetAtt:
                 - TestLambdaFunction
                 - Arn
             StartingPosition: TRIM_HORIZON
             Enabled: True
      

      【讨论】:

        猜你喜欢
        • 2020-05-05
        • 1970-01-01
        • 2020-06-08
        • 1970-01-01
        • 2017-07-22
        • 2019-04-07
        • 2019-10-14
        • 1970-01-01
        • 2020-06-30
        相关资源
        最近更新 更多