gpt4 book ai didi

amazon-web-services - 将现有的带有流的 dynamodb 表添加到 CDK

转载 作者:行者123 更新时间:2023-12-04 03:31:40 25 4
gpt4 key购买 nike

我目前有一个已经使用了几年的 dynamodb 表,最初是在控制台中创建的。它包含许多有值(value)的数据。它使用流使用表的 lambda 触发器定期向 s3 发送快照以进行分析。最终用户大量使用该表本身来访问他们的数据。
我想将我的解决方案迁移到 CDK。我想探索的选项:

  • 当您使用 Table.fromTableArn 构造时,您无法访问表流 arn,因此无法附加 lambda 触发器。有没有解决的办法?
  • 有没有办法在我的 CDK 堆栈中克隆 dynamoDB 表内容,以便我的副本将以与原始状态完全相同的状态开始?然后我可以在 CDK 中添加和管理流等没问题。
  • 值得检查我的假设,即这些是唯一的 2 个选项。
  • 最佳答案

  • 将 Lambda 订阅到现有的 Dynamo 表:

  • 我们不需要在同一个堆栈中创建表。我们不能在 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],
    })
    );
  • 将现有的 DynamoDb 导入 CDK:

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

    关于amazon-web-services - 将现有的带有流的 dynamodb 表添加到 CDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66684488/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com