首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将包含流的现有dynamodb表添加到CDK中

将包含流的现有dynamodb表添加到CDK中
EN

Stack Overflow用户
提问于 2021-03-18 03:49:06
回答 1查看 2.8K关注 0票数 7

我目前有一个dynamodb表,它已经使用了两年,最初是在控制台中创建的。它包含了很多有价值的数据。它使用流周期性地使用表的lambda触发器向s3发送快照以进行分析。表本身被终端用户大量使用来访问他们的数据。

我想将我的解决方案迁移到CDK中。我想探讨的选择是:

  1. 使用Table.fromTableArn构造时,无法访问表流arn,因此不可能附加lambda触发器。有办法绕道吗?
  2. 是否有一种方法可以克隆我的CDK堆栈中的dynamoDB表内容,以便我的副本将以与原始副本完全相同的状态开始?然后我可以在CDK中添加和管理流等,没有问题。
  3. 值得一试的是,我认为这是唯一的两种选择。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-18 06:32:03

  1. 订阅Lambda现有的Dynamo表:

我们不需要在同一个堆栈中创建表。我们不能在Lambda上使用addEventSource,但是我们可以使用addEventSourceMapping并向lambda添加必要的策略,这就是addEventSource在幕后所做的事情。

代码语言:javascript
复制
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],
  })
);
  1. 将现有DynamoDb导入CDK:

我们在cdk中重写具有相同属性的dynamo db,用synth来生成Cloudformation,并使用资源导入将现有资源导入堆栈。这是一个所以回答

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66684488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档