Python 无法为Kinesis数据消防软管传递流创建CDK脚本

Python 无法为Kinesis数据消防软管传递流创建CDK脚本,python,aws-cdk,amazon-kinesis-firehose,Python,Aws Cdk,Amazon Kinesis Firehose,我必须为数据管道的部署创建一个CDK脚本。我已经创建了lambda函数、SNS主题、S3 bucket(非常容易),但在创建用于将文件放入S3 bucket的Kinesis Firehose交付流时,我遇到了困难 到目前为止,用于Kinesis消防软管输送流的My stack.py代码不起作用: delivery_stream = firehose.CfnDeliveryStream( self, "CdkworkshopFirehose"

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

到目前为止,用于Kinesis消防软管输送流的My stack.py代码不起作用:

      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=" "
            )
        )
有人知道问题出在哪里以及原因吗?因为此代码返回一个错误:

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

角色ARN是强制性的,如果您查看错误消息,它会告诉您问题所在(我已突出显示):

CDKWorkshopFirehope模型验证失败(#/S3DestinationConfiguration/RoleARN:关键字[pattern]的验证约束失败)

问题是
S3DestinationConfiguration
的一部分,这意味着您的
firehose.CfnDeliveryStream.S3DestinationConfiguration属性
中的
RoleARN
与定义有效角色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
            )
        )

我想出来了,但我找不到在CDK中创建角色的任何示例,我尝试从控制台输入现有角色的ARN,但也不起作用。好的,您可以添加一个单独的答案,以便将来的读者可以从中受益吗?