我目前有一个dynamodb表,它已经使用了两年,最初是在控制台中创建的。它包含了很多有价值的数据。它使用流周期性地使用表的lambda触发器向s3发送快照以进行分析。表本身被终端用户大量使用来访问他们的数据。
我想将我的解决方案迁移到CDK中。我想探讨的选择是:
发布于 2021-03-18 06:32:03
我们不需要在同一个堆栈中创建表。我们不能在Lambda上使用addEventSource,但是我们可以使用addEventSourceMapping并向lambda添加必要的策略,这就是addEventSource在幕后所做的事情。
const streamsArn =
"arn:aws:dynamodb:us-east-1:110011001100:table/test/stream/2021-03-18T06:25:21.904";
const myLambda = new lambda.Function(this, "my-lambda", {
code: new lambda.InlineCode(`
exports.handler = (event, context, callback) => {
console.log('event',event)
callback(null,'10')
}
`),
handler: "index.handler",
runtime: lambda.Runtime.NODEJS_10_X,
});
const eventSoruce = myLambda.addEventSourceMapping("test", {
eventSourceArn: streamsArn,
batchSize: 5,
startingPosition: StartingPosition.TRIM_HORIZON,
bisectBatchOnError: true,
retryAttempts: 10,
});
const roleUpdates = myLambda.addToRolePolicy(
new iam.PolicyStatement({
actions: [
"dynamodb:DescribeStream",
"dynamodb:GetRecords",
"dynamodb:GetShardIterator",
"dynamodb:ListStreams",
],
resources: [streamsArn],
})
);我们在cdk中重写具有相同属性的dynamo db,用synth来生成Cloudformation,并使用资源导入将现有资源导入堆栈。这是一个所以回答
https://stackoverflow.com/questions/66684488
复制相似问题