首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Typescript CDK,正在尝试将kinesis流作为源添加到firehose

AWS Typescript CDK,正在尝试将kinesis流作为源添加到firehose
EN

Stack Overflow用户
提问于 2021-09-09 12:34:55
回答 1查看 431关注 0票数 0

我正在尝试这样做:

DynamoDB -> Kinesis数据流-> Kinesis firehose -> S3 ->红移

我在控制台中尝试了一下,一切都运行得很好,但是当我尝试使用was typescript CDK编写代码时,我得到了这个错误

代码语言:javascript
复制
Resource handler returned message: "KinesisSourceStreamConfig is only applicable for KinesisStreamAsSource stream type. (Service: Firehose, Status Code: 400, Request ID: c3b3
9dc4-c6a7-3c31-9a00-68c863659e53, Extended Request ID: bgcK523kXRumygU0/xX5cjDlUZgF6LLwSYo7sqyfQ2GIjzW9kJGWY3ZFm9pHoZlPuLanXnLlSqOr3xhyfHIEW7GYONByP5Fe)" (RequestToken: 1c9c1
56b-c2a4-9600-28f5-52af5664e3bb, HandlerErrorCode: InvalidRequest)

下面是我尝试实现的代码:

代码语言:javascript
复制
import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';
import * as dynamodb from '@aws-cdk/aws-dynamodb';
import * as kinesis from '@aws-cdk/aws-kinesis';
import * as  firehose from '@aws-cdk/aws-kinesisfirehose';
import * as iam from "@aws-cdk/aws-iam";
import { CfnResource } from '@aws-cdk/core';

const DynamoDBArn = 'arn:aws:dynamodb:us-east-1:207627709836:table/blog-srsa-ddb-table';

export class DynamoStreamer extends cdk.Stack {
  constructor(
    scope: cdk.Construct,
    id: string
  ) {
    super(scope, id);
    const bucket = new s3.Bucket(this, 'data-lake', {
      publicReadAccess: false
    });
    const dataStream=new kinesis.Stream(this,"dataStream",{shardCount:1,streamName:"stevensu_cdk_stream"})

    const myTable = new dynamodb.Table(this, 'dynamo-table', {
      tableName: 'blog-srsa-ddb-table2',
      partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING },
      sortKey: { name: 'name', type: dynamodb.AttributeType.STRING },
      removalPolicy: cdk.RemovalPolicy.RETAIN,
      kinesisStream: dataStream
    });

    const deliveryStreamRole = new iam.Role(this, `DeliveryStreamRole`, {
      assumedBy: new iam.ServicePrincipal("firehose.amazonaws.com"),
    });


    const firehoseDeliveryStream = new firehose.CfnDeliveryStream(this, 'Delivery Stream', {
      redshiftDestinationConfiguration: {
        clusterJdbcurl: 'jdbc:redshift://redshift-cluster-1.cicrdvtr7ouk.us-east-1.redshift.amazonaws.com:5439/dev',
        username: 'admin',
        password: '2131636+aA',
        roleArn: 'arn:aws:iam::207627709836:role/service-role/KinesisFirehoseServiceRole-KDS-RED-vTWqG-us-east-1-1630965194702',
        copyCommand: {
          dataTableName: 'users_test',
          copyOptions: 'format as json \'auto\''
        },
        s3Configuration: {
          bucketArn: bucket.bucketArn,
          roleArn: deliveryStreamRole.roleArn
        },
      },
      kinesisStreamSourceConfiguration: {
        kinesisStreamArn: dataStream.streamArn,
        roleArn: deliveryStreamRole.roleArn
      },

    });
  }
}

错误发生在这部分代码中:

代码语言:javascript
复制
 kinesisStreamSourceConfiguration: {
        kinesisStreamArn: dataStream.streamArn,
        roleArn: deliveryStreamRole.roleArn
      },
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-09 12:47:08

不确定是否有更好的方法来做到这一点,但错误来自于您需要在CfnDeliveryStream实例中包含deliveryStreamType密钥并将其设置为kinesisStreamAsSource

另请参阅关于允许值的cfn文档:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-deliverystreamtype

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69118280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档