Search code examples
amazon-web-servicesaws-cloudformationamazon-cloudwatchamazon-kinesis-firehose

Setting Kinesis Firehose as target for CloudWatch Events Rule in CloudFormation


I'm making a CloudFormation template to capture the components of a process where CloudWatch Events are sent to a Kinesis Firehose Delivery Stream. (It's working in AWS fine manually configured through the console.)

When I define the 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 can be used to get the ARN of a AWS::Kinesis::Stream but there is nothing for AWS::KinesisFirehose::DeliveryStream.)

Am I going about something the wrong way or is this just one of those things that is not yet supported by CloudFormation?


Solution

  • You should be able to build the DeliveryStream ARN based on the ARN namespace for Kinesis Firehose

    Something like the following assuming the AWS::KinesisFirehose::DeliveryStream resource is called DeliveryStream(not tested)

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

    Since the return value on AWS::KinesisFirehose::DeliveryStream is the Delivery Stream name