使用 cdk 将现有存储桶的 s3 事件通知设置为 SQS 正在尝试创建未知的 lambda 函数

Setting up an s3 event notification for an existing bucket to SQS using cdk is trying to create an unknown lambda function

我正在尝试使用 aws cdk 为 现有 S3 存储桶设置 s3 事件通知。 下面是代码。

bucket = s3.Bucket.from_bucket_name(self, "S3Bucket", f"some-{stack_settings.aws_account_id}")
bucket.add_event_notification(
    s3.EventType.OBJECT_CREATED,
    s3n.SqsDestination(queue),
    s3.NotificationKeyFilter(
        prefix="uploads/"
    ),
)

堆栈创建失败,我在 cloudformation 控制台上看到以下错误。

User: arn:aws:sts::<account>:assumed-role/some-cicd/i-8989898989xyz
is not authorized to perform: lambda:InvokeFunction on resource: 
arn:aws:lambda:us-east-1:<account_number>:function:<some name>-a-BucketNotificationsHandl-b2kDmawsGjpL
because no identity-based policy allows the lambda:InvokeFunction action (Service: AWSLambda; 
Status Code: 403; Error Code: AccessDeniedException; Request ID: c2d91744-416c-454d-a510-ff4cce061b80; 
Proxy: null)

我不确定这个 lambda 是什么。我没有尝试在我的 cdk 应用程序中创建任何这样的 lambda。

有谁知道这里发生了什么以及我的代码是否有问题?

向现有存储桶添加通知的功能是通过自定义资源实现的 - 即使用 AWS SDK 修改存储桶设置的 lambda。

CloudFormation 在创建此自定义资源时调用此 lambda(也在 update/delete 上)。

如果您想了解详细信息,here 是相关的 github 问题,您可以查看添加该功能的提交。