Cloudformation Lambda 与两个模板之间的 dynamodb 流

inf*_*oop 2 aws-cloudformation aws-lambda

我有两个 Cloudformation 堆栈。其中之一定义了Dynamodb。

我希望第二个堆栈使用第一个堆栈中引用的 Dynamodb。第二个堆栈有一个 Lambda 函数,它将从堆栈 1 接收 dynamodb 流。

我应该如何将 dynamodb 从一个堆栈导出和导入到另一个堆栈以使用 Lambda 流?

Mil*_*mak 10

在 DynamoDB 表堆栈中,导出表的StreamArn属性。使用它作为 的值EventSourceArn来定义您的 Lambda 堆栈中的EventSourceMapping资源。

# DynamoDB stack
Resources:
  Table:
    Type: AWS::DynamoDB::Table
    Properties:
      StreamSpecification: NEW_AND_OLD_IMAGES  
      # etc.

Outputs:
  TableStreamArn:
    Value: !GetAtt Table.StreamArn
    Export:
      Name: StreamArn

# Lambda stack
Resources:
  Function:
    Type: AWS::Lambda::Function
    # etc.

  EventMapping:
    Type: AWS::Lambda::EventSourceMapping
    Properties:
      EventSourceArn: !ImportValue StreamArn
      FunctionName: !GetAtt Function.Arn
      # etc.
Run Code Online (Sandbox Code Playgroud)

您也可以反过来做——将 Lambda 函数 ARN 导入到 DynamoDB 堆栈并在那里定义事件映射,但这对我来说不太合乎逻辑。