Kinesis Firehose Delivery Stream transformation functions

Greetings! I’m using serverless framework for the first time to create a proof-of-concept application.

When using Kinesis it is possible to create Delivery Stream to S3 for example. It might look like this:

  DeliveryStream:
    Type: AWS::KinesisFirehose::DeliveryStream
  Properties:
    DeliveryStreamName: ${self:custom.kinesisFirehoseName}
    DeliveryStreamType: KinesisStreamAsSource
    KinesisStreamSourceConfiguration:
          KinesisStreamARN:
            'Fn::GetAtt':
              - KinesisStream
              - Arn
          RoleARN:
            'Fn::GetAtt':
              - DeliveryStreamRole
              - Arn
    ExtendedS3DestinationConfiguration:
      BucketARN:
        'Fn::Join':
        - ''
        - - 'arn:aws:s3:::'
          - Ref: KinesisFirehoseBucket
      BufferingHints:
        IntervalInSeconds: "60"
        SizeInMBs: "1"
      CompressionFormat: "UNCOMPRESSED"
      Prefix: "prefix/"
      RoleARN: { Fn::GetAtt: [ DeliveryStreamRole, Arn ] }
      ProcessingConfiguration:
        Enabled: 'true'
        Processors:
          - Parameters:
              - ParameterName: LambdaArn
                ParameterValue: { Fn::GetAtt: [ transformKinesis, Arn ] }
            Type: Lambda

My question is - how do I create the transformKinesis lambda function using serverless framework syntax? At the moment I get this error:

The CloudFormation template is invalid: Template error: instance of Fn::GetAtt references undefined resource transformKinesis

Ok, I think I’ve got this worked out now. The referenced name needs to be in CF format, so: TransformKinesisLambdaFunction in this case.

Hi @ishmeister, could you please show me your role definiton ?

DeliveryStreamRole

Basically I have the same setting as yours

KinesisStreamSourceConfiguration:
      KinesisStreamARN:
        'Fn::GetAtt':
          - KinesisStream
          - Arn
      RoleARN:
        'Fn::GetAtt':
          - DeliveryStreamRole
          - Arn

But I kept on have the error on generating DeliveryStream, I’m not sure why.