如何在函数事件中设置现有的运动流 arn

how to set existing kinesis stream arn in function event

我正在使用无服务器框架并尝试使用 event/trigger 定义部署 Lambda 函数。 事件源是已经存在的 Kinesis 流。 我正在尝试使用 Fn::Join 函数设置流 ARN,但它似乎不受支持。 如何在不对 AWS 区域和账户 ID 进行硬编码的情况下设置事件流 ARN?

我的yml代码:

functions:
    myfunction:
    handler: myfunction.handler
    name: myfunction-name
    memorySize: 128
    timeout: 120
    events:
      - stream:
          type: kinesis
          arn:
            Fn::Join:
              - ""
              - - "arn:aws:kinesis:"
                - Ref: AWS::Region
                - ":"
                - Ref: AWS::AccountId
                - ":stream/xxxxxxx"
          batchSize: 300
          startingPosition: LATEST
          enabled: true

使用Fn::GetAtt.

来自 aws 文档:

Fn::GetAtt

returns Arn 属性的值。

阿恩

Kinesis 流的 Amazon 资源名称 (ARN),例如 arn:aws:kinesis:us-east-2:123456789012:stream/mystream.

有关使用 Fn::GetAtt 的详细信息,请参阅 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html

我喜欢 sub 函数相对于 join 的简单性和可读性。

!Sub arn:aws:kinesis:${AWS::Region}:${AWS::AccountId}:stream/xxxx

重新阅读它与无服务器框架相关,我会利用这个插件:https://www.npmjs.com/package/serverless-pseudo-parameters