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

Aws lambda 如何在函数事件中设置现有的动画流arn,aws-lambda,serverless-framework,Aws Lambda,Serverless Framework,我正在使用无服务器框架并尝试使用事件/触发器定义部署Lambda函数。 事件源是已存在的动画流。 我试图用Fn::Join函数设置stream ARN,但它似乎不受支持。 如何在不硬编码AWS区域和帐户Id的情况下设置事件流ARN 我的yml代码: functions: myfunction: handler: myfunction.handler name: myfunction-name memorySize: 128 timeout: 120

我正在使用无服务器框架并尝试使用事件/触发器定义部署Lambda函数。 事件源是已存在的动画流。 我试图用Fn::Join函数设置stream 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

返回Arn属性的值

Arn

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


有关使用Fn::GetAtt的更多信息,请参见

我喜欢连接上的子函数的简单性和可读性

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


重读它与无服务器框架相关的内容,我会利用这个插件:

感谢您的响应。。。由于Kinesis流已经存在,它的定义包含在我的yml中,因此我不能将Fn:GetAtt引用到任何资源。我还试图将运动流设置为yml中的资源,但出现了一个错误“该流已经存在”。有没有一种方法可以引用已经存在的资源?您可以看到如何做:运动流已经存在,并且不是由不同的CF创建的。这就是我所做的。谢谢