【问题标题】:How to have more than two DynamoDB Streams that trigger lambdas如何拥有两个以上触发 lambda 的 DynamoDB 流
【发布时间】:2017-05-31 16:12:24
【问题描述】:

我们有一个 dynamoDB 表,其中有两个进程读取它(两个 lambda,作为 Lambda 触发器)。我们现在需要添加第三个,但要知道 AWS 强烈建议同时阅读器不超过两个(我假设添加第三个 lambda 触发器会使我们的阅读器数量增加到 3 个?)。我们如何添加第三个服务来利用 DynamoDB 流而不影响性能?

我很早的想法是用一个将流记录放在 SQS 触发器 SNS 上的 lambda 替换这两个 lambda,该 SNS 会提醒订阅该主题的任何 lambda,然后他们可以对流记录执行操作。

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb aws-lambda amazon-dynamodb-streams


    【解决方案1】:

    我将只有一个在 dynamoDB 流上触发的瘦 lambda,并让该 lambda 调用您的其他 3 个“实际”lambda。您可以配置死信 SQS 队列,但除此之外,我会跳过使用 SQS 或 SNS 进行任何操作。

    在 python lambdas 中,触发函数是这样的:

    import boto3
    
    lambda_client = boto3.client('lambda', region_name='your-region')
    
    def lambda_handler(event, context):
        lambda_client.invoke(FunctionName='function-name-1', InvocationType='Event', Payload=event)
        lambda_client.invoke(FunctionName='function-name-2', InvocationType='Event', Payload=event)
        lambda_client.invoke(FunctionName='function-name-3', InvocationType='Event', Payload=event)
        return 'Replication completed'
    

    如果您开始有太多要调用的函数,请考虑将其迁移到 Kinesis 之类的东西。

    【讨论】:

      【解决方案2】:

      您的观察是正确的,因为您的架构转向 Pub-Sub 模型,使用 SNS 主题发布流消息通知,而订阅者收听主题是有意义的。

      【讨论】:

        猜你喜欢
        • 2018-12-18
        • 2020-02-27
        • 1970-01-01
        • 2019-11-08
        • 1970-01-01
        • 1970-01-01
        • 2019-08-02
        • 1970-01-01
        • 2019-01-28
        相关资源
        最近更新 更多