在 CloudFormation 中将 Kinesis Firehose 设置为 CloudWatch Events 规则的目标

Setting Kinesis Firehose as target for CloudWatch Events Rule in CloudFormation

我正在制作一个 CloudFormation 模板来捕获将 CloudWatch Events 发送到 Kinesis Firehose Delivery Stream 的流程的组件。 (它在通过控制台手动配置的 AWS 中运行良好。)

当我定义 AWS::Events::Rule there is a Targets property that expects the ARN of a valid target. The problem is that a AWS::KinesisFirehose::DeliveryStream resource does not support retrieving its ARN and Fn::Ref just returns its logical ID. (Fn::GetAtt 可用于获取 AWS::Kinesis::Stream 的 ARN 但 AWS::KinesisFirehose::DeliveryStream 没有。)

我是不是做错了什么,或者这只是 CloudFormation 尚不支持的事情之一?

您应该能够基于 ARN namespace 为 Kinesis Firehose

构建 DeliveryStream ARN

假设 AWS::KinesisFirehose::DeliveryStream 资源被调用 DeliveryStream(未测试)

{"Fn::Sub": [
    "arn:aws:firehose:${AWS::Region}:${AWS::AccountId}:deliverystream/${DeliveryStream}",
    {
      "DeliveryStream": {"Ref": "DeliveryStream"}
    }
  ]}

因为 AWS::KinesisFirehose::DeliveryStream 上的 return value 是传输流名称