无法为 Kinesis Data Firehose 传输流创建 CDK 脚本

Unable to create CDK script for Kinesis Data Firehose delivery stream

我必须为数据管道的部署创建一个 CDK 脚本。我已经创建了 lambda 函数、SNS 主题、S3 存储桶(非常容易),但是我在创建 Kinesis Firehose 传输流以将文件放入 S3 存储桶时遇到了困难。

我的 stack.py 代码用于 Kinesis Firehose 传输流,但目前无法正常工作:

      delivery_stream = firehose.CfnDeliveryStream(
            self, "CdkworkshopFirehose",
            s3_destination_configuration=firehose.CfnDeliveryStream.S3DestinationConfigurationProperty(
                bucket_arn=destination_bucket.bucket_arn,
                buffering_hints=firehose.CfnDeliveryStream.BufferingHintsProperty(
                    interval_in_seconds=60
                ),
                compression_format="UNCOMPRESSED",
                role_arn=" "
            )
        )

有谁知道问题出在哪里,为什么?因为这段代码returns一个错误:

CdkworkshopFirehose Model validation failed (#/S3DestinationConfiguration/RoleARN: failed validation constraint for keyword [pattern])

角色 ARN 是必需的,如果您查看错误消息,它会告诉您问题出在哪里(我已突出显示):

CdkworkshopFirehose Model validation failed (#/S3DestinationConfiguration/RoleARN: failed validation constraint for keyword [pattern])

问题是 S3DestinationConfiguration 的一部分,这意味着您的 firehose.CfnDeliveryStream.S3DestinationConfigurationPropertyRoleARN 与定义有效角色 ARN 的模式不匹配。

解决方案:创建一个角色并引用它的 ARN 或输入​​现有角色的 ARN。

解决方案:

firehose_role = iam.Role(self, "firehose-role", assumed_by=iam.ServicePrincipal("firehose.amazonaws.com"))
firehose_role_arn = firehose_role.role_arn


        delivery_stream = firehose.CfnDeliveryStream(
            self, "CdkworkshopFirehose",
            s3_destination_configuration=firehose.CfnDeliveryStream.S3DestinationConfigurationProperty(
                bucket_arn=destination_bucket.bucket_arn,
                buffering_hints=firehose.CfnDeliveryStream.BufferingHintsProperty(
                    interval_in_seconds=60
                ),
                compression_format="UNCOMPRESSED",
                role_arn=firehose_role_arn
            )
        )