我有一个cdk(2.61版本)应用程序与CRUD Lambdas,一个documentDB集群和一个appsync API。我必须在同一个documentDB数据库中注册来自lambdas正在执行的CRUD操作的流事件。我从documentDB数据库中启用了流事件,但现在我我必须将集群配置为lambda的事件源,lambda将接受这些流并注册它的事件。lambda库的构造EventSource没有DocumentDB选项,所以我我使用EventSourceMapping,如果我理解得很好,它允许使用任何AWS服务作为事件源。
const lambdaRecordChangeStreams = new lambda.Function(this, `lambda-record_change_stream`, {
code: lambda.Code.fromAsset(
path.join(__dirname, '../backend/controllers/lambda-record_change_stream'),
),
functionName: `lambda-record_change_stream`,
layers: [mongooseLayer],
});
const clusterStreamEventSource = new lambda.EventSourceMapping(this, `stream_event_source`, {
eventSourceArn: `arn:aws:rds:${region}:${env?.account}:cluster:${cluster.clusterIdentifier}`,
target: lambdaRecordChangeStreams,
},
);
当我尝试部署它时,我得到了错误:“提供的请求无效:无效参数:databaseName,documentDBEventSourceConfig”。
我看到在cdk文档中有一个对象:“CfnEventSourceMapping”,它可以将集群docdb配置为props中的事件源,属性DocumentDbEventSourceConfig,但当我尝试实现它时,我得到了一个错误,该属性不存在。所以我现在卡住了。
如果你能帮我,那就太好了!
1条答案
按热度按时间fkaflof61#
看起来L1 CfnEventSourceMapping构造是您目前唯一的选择。请参阅documentDbEventSourceConfig prop。
有关先决条件和权限的信息,请参阅Lambda文档。DocumentDB文档列出了其他considerations。
将️CDK更新到最新版本。您的CDK v2.61是在1月份发布的,比Lambda支持DocumentDB变更流的事件源announced早一个月。