0
votes

Using cloudformation I want to connect a Kinesis Stream directly to a DynamoDB table. It looks like the way to do this is with a StreamConsumer. The cloudformation script below gives me this error:

Value 'kinesisstreamtodynamodb' at 'streamARN' failed to satisfy constraint: Member must satisfy regular expression pattern: arn:aws.*:kinesis:.*:\d{12}:stream/.+ (Service: AmazonKinesis

It doesn't like the StreamARN: !Ref KinesisSTream property.

I will probably change this configuration to use a lambda between the kinesis stream and dynamodb table, but for now I would like to get this configuration working.

What am I doing wrong when it comes to connection a kinesis stream to a dynamodb table?

  KinesisStream:
    Type: AWS::Kinesis::Stream
    Properties:
      Name: kinesisstreamtodynamodb
      ShardCount: 1

  DynamoTable:
    Type: AWS::DynamoDB::Table
    Description: streaming data from kinesis
    Properties:
      TableName: Kinesis-DynamoTable
      AttributeDefinitions:
        - AttributeName: "timestamp"
          AttributeType: "S"
        - AttributeName: "logmessage"
          AttributeType: "S"
      KeySchema:
        - AttributeName: "timestamp"
          KeyType: "HASH"
        - AttributeName: "logmessage"
          KeyType: "RANGE"
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 5

  StreamConsumer:
    Type: "AWS::Kinesis::StreamConsumer"
    Properties:
      StreamARN: !Ref 'KinesisStream'
      ConsumerName: !Ref 'DynamoTable'
1

1 Answers

0
votes

It's looking for the arn, not a reference. You can get that easily enough:

!GetAtt KinesisSTream.arn

:)