mon*_*key 7 amazon-web-services aws-cdk
我目前有一个 dynamodb 表,已经使用了几年,最初是在控制台中创建的。它包含大量有价值的数据。它使用流通过表的 lambda 触发器定期将快照发送到 s3 进行分析。最终用户大量使用该表本身来访问其数据。
我想将我的解决方案迁移到 CDK 中。我想探索的选项:
我们不需要在同一堆栈中创建表。我们不能在 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],
})
);
Run Code Online (Sandbox Code Playgroud)
我们在cdk、synth中使用相同的属性重写dynamo db来生成Cloudformation,并使用资源导入将现有资源导入到堆栈中。这是一个SO答案
归档时间: |
|
查看次数: |
4365 次 |
最近记录: |