有没有办法在触发 lambda 之前过滤 AWS DynamoDb Stream?

2024-01-08

因此,我们有几个 lambda 来监听数据库上的更改,在每个 lambda 中,我们必须在一开始就进行过滤,因为这个特定的 lambda 不关心所有更改,只关心特定的更改。

更明确地说,我们正在应用事件源,并且 lambda 应该是事件处理程序。我希望仅当事件 A 插入数据库时​​而不是每当插入事件时才触发 lambda A! lambda B 和事件 B 等也是如此。

目前,我们在每个 lambda 的开头都有一个过滤器:

lambdaA handler:
const eventsToBeProcessed = events.filter(
   (event) => event.eventName === 'EventA'
);

现在我们已经有了一大堆 lambda,当我只需要触发一个时,触发所有这些 lambda 是没有意义的!

我对 AWS 不太有经验,但我假设解决方案是:

  • 能够过滤 DynamoDb 触发器
  • 不是让 dynamodb 触发 lambda,而是在每次更改时触发 AWS 服务,并且它会根据更新内容知道要触发哪个 lambda

EDIT:

我对我标记为答案的解决方案不太满意,主要原因是设计中的单点故障,而且它需要依靠 SNS 来进行发布/订阅,而 SNS 的可用性不高,而且它如果您尝试拥有一个高度可用的系统(4 个 9 左右),可能会让您失败

我最终采用的解决方案(至少目前如此)是,当我将事件推送到事件存储中时,如果我想触发副作用,我只需将其推送到 AWS 的 EventBridge(带有规则的事件总线)即可。 EventBridge 最好的部分是,您可以设置所需的规则、所需的总线,然后在总线有事件 A 时调用(例如)Lambda A 等等。


现在有一种方法可以做到这一点,

https://aws.amazon.com/blogs/compute/filtering-event-sources-for-aws-lambda-functions https://aws.amazon.com/blogs/compute/filtering-event-sources-for-aws-lambda-functions//

这是 lambda 的一项新功能,它使用与 AWS Eventbdridge 相同的语法。

aws lambda create-event-source-mapping \
--function-name fleet-tire-pressure-evaluator \
--batch-size 100 \
--starting-position LATEST \
--event-source-arn YOUR_DB_STREAM_ARN \
--filter-criteria '{"Filters": [{"eventName": ["EventA"]}]}'

你可以参考这个文档来了解具体的语法 https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在触发 lambda 之前过滤 AWS DynamoDb Stream? 的相关文章

  • Spring JMS监听器即使在异常时也会确认

    我正在使用 JMS 向 SQS 队列发送 接收消息 但是即使在使用 client acknowledge 时出现异常 我也无法重新传递消息 如何实现这一目标 我尝试了一个简单的测试 JmsListener destination test
  • 如何自动启动我的 ec2 实例、运行命令然后将其关闭?

    我想每周对 redshift postgres 数据库中的数据运行一次机器学习模型 我使用以下命令将 R 脚本设置为休息 apiplumbr然后我将其设置为一项任务来管理pm2 我有它 所以任务会在ec2实例启动然后继续运行 要让 R 脚本
  • AWS cognito 用户迁移池触发器不适用于登录流程

    我正在使用带有认知执行角色的 Lambda 函数进行 AWS 认知池迁移 以下是我的新池应用程序客户端设置 or AWS doc says 用户迁移身份验证流程 用户迁移 Lambda 触发器 允许从旧用户管理系统轻松迁移用户 进入您的用户
  • 适用于 Hadoop 的 DynamoDB 输入格式

    我必须使用 Hadoop mapreduce 处理保留在 Amazon Dynamodb 中的一些数据 我在互联网上搜索 Dynamo DB 的 Hadoop InputFormat 但找不到它 我对 Dynamo DB 不熟悉 所以我猜测
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可
  • 从 AWS lambda 函数更新 Amplify 数据存储

    在我的应用程序中 有一个功能 当我们在 s3 中上传文件时 会调用相关的 AWS Lambda 触发器 当 Lambda 函数触发时 我想将文件相关数据存储在 AWS Amplify 数据存储中 是否可以在 Lambda 函数中访问 AWS
  • 如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

    有谁知道如何使用配置文件 ebextensions 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展 我使用的是 64 位 Amazon Linux 2017 03 v2 4 0 运行 PHP 7 0 1
  • 如何授予轮换 Lambda 对 AWS Secrets Manager 的访问权限

    使用无服务器框架 我正在尝试构建定期轮换秘密的 Lambda 函数 https docs aws amazon com secretsmanager latest userguide rotating secrets html存储在 AWS
  • 使用 Amazon SQS 的 .net 应用程序示例

    我正在寻找一个示例 Net 应用程序 该应用程序会持续检查 Amazon SQS 是否有新消息 并在发现新消息时执行一项操作并将其从队列中删除 我的目标是让一个在 EC2 上运行的应用程序监视我的 SQS 队列中的新消息 当找到一条消息时
  • 如何使用 aws-cdk 在 EC2 和 RDS 之间创建 DependsOn 关系

    我目前正在使用aws cdk TypeScript 创建一个堆栈 其中包含EC2实例和一个RDS数据库实例 The RDS实例需要在之前设置EC2实例可以启动并且userdata将被执行 我遇到的问题是 我找不到一种方法来定义DepensO
  • Nginx url 限制 502 网关

    我有一个问题 但我接受绕过此功能的其他建议 基本上 我在 get 请求中向我的服务器发送大约 3000 个字符的大行文本 然后服务器将其作为 url 中的参数发送到谷歌翻译 问题 当 url gt 1900 个字符时 Nginx 会抛出 5
  • 无法对 Elastic Beanstalk AWS 上运行 ASP.NET 的网站强制使用 HTTPS(使用经典负载均衡器)

    这样我终于能够成功创建一个https网站了 它只是运行模板 ASP NET Web 项目 我有一个证书 并且该证书已添加到 AWS 中的 ELB 弹性负载均衡器 经典 中 我的环境可以浏览到https www mvc cloudy skie
  • Amazon Elasticache Redis 集群 - 无法获取端点

    我需要获取 Amazon Elasticache 中 Redis 集群的终端节点 以下代码适用于 Memcached 集群 但不适用于 Redis import com amazonaws auth AWSCredentials impor
  • 如何使用 Python 通过 Firebase 的 Lambda 发送推送通知

    我正在尝试通过 AWS Lambda 从 Firebase Cloud Message 发送推送通知 API 响应授权错误 导入请求 导入 json def lambda handler event context message even
  • 如何恢复丢失的aws服务器实例的私钥?

    我丢失了 AWS 实例的私钥 我在控制台面板中搜索了该选项 恐怕你可能不走运 当您启动实例时 您应该指定密钥的名称 您计划用于连接到实例的对 如果你不指定 启动实例时现有密钥对的名称 您 将无法连接到实例 当您连接到 例如 您必须指定与密钥
  • Amazon S3 - 一个对象的多个键

    我有一个 S3 存储桶 其中包含超过 1 亿个对象 每个对象像往常一样都有一个唯一的密钥 我想知道是否有办法为其中一些对象分配另一个键 像这样的东西 键1 gt 对象1 键2 gt 对象2 Key3 gt Object2 我想添加这个 我在
  • 如何在 Lambda 中将对象上传到 S3?

    似乎无法将对象上传到 Lambda 中的 S3 本地一切正常 日志中没有错误可以显示出了什么问题 代码如下 console log Loading function var AWS require aws sdk var s3 new AW
  • 调用 IndexFaces 操作时出现 InvalidS3ObjectException

    我正在尝试以下教程 https aws amazon com blogs machine learning easily perform facial analysis on live feeds by creating a serverl
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization

随机推荐

  • ReferenceError:事件未在 mozilla firefox 中定义[重复]

    这个问题在这里已经有答案了 此代码不适用于 Firefox V21 0 但适用于 IE V9 V10 和 Chrome V 27 0 1453 110 m 方法校准
  • 使用 .NET MVC 5 实现基于角色的授权

    我想在我正在构建的 Web 应用程序中实现基于角色的授权 我想象的方法是在我的数据库中创建 3 个表 如下所示 1 Roles 2 UserRoles many to many table 3 Users 之后 每个用户都会被分配一个角色
  • C# File.Copy 源文件夹和目标文件夹需要不同的用户权限

    我有一个应用程序 可以将本地硬盘驱动器上任何位置的文件复制到网络共享上的目录 网络目录只能由特殊域帐户访问 我通常通过使用模仿者级 https stackoverflow com questions 9909784 impersonatin
  • 为什么 eventsMatchingPredicate 返回 nil?

    这是我的代码 NSString calID NSUserDefaults standardUserDefaults objectForKey calendarIdentifier EKCalendar cal eventStore cale
  • 部署失败错误:Mono.AndroidTools.InstallFailedException:失败 [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

    我的应用程序没有错误 但是当我尝试调试应用程序时 部署失败 没有错误 并给出以下输出 部署失败 1 gt Mono AndroidTools InstallFailedException 失败 INSTALL FAILED UPDATE I
  • 如何用新创建的节点替换TreeView选定的节点

    我有一个填充的treeView 其中包含我创建的节点 有几个节点类 全部继承自treeNode 当我编辑节点 使用 GUI 对话框 时 它可能会更改为不同的类 因此我在该过程中创建一个新节点 并尝试用我的新节点替换所选节点 但这不起作用 该
  • 在 bash 中声明数组时出现错误“语法错误:”(“意外”

    同样的问题this OP https stackoverflow com questions 15209607 array declaration of shellscript doesnot work in scheduled cron
  • 如何使用 selenium xpath 等待页面中的两个元素之一

    我有两个元素可以等待 我想要wait直到它们中的任何一个出现在页面上 我正在尝试使用xpath定位器 但它不起作用 By xpath contains id idNumber1 or contains id idNumber2 这是可以实现
  • 字符常量的 C 编码

    我的程序员的直觉会说 c 中的字符常量 例如 x 是使用编译它的机器的机器字符集进行编码的 然而 以下摘录自 C 编程语言 ANSI C 版 字符常量是用单引号括起来的一个或多个字符的序列 如 x 只有一个字符的字符常量的值是执行时机器字符
  • Firefox 忽略 CSS font-weight 属性

    不确定我是否使用正确的流程来显示具有 3 种粗细的字体 正常 粗体 和 较亮 但是 它似乎适用于大多数浏览器 除了 Firefox Firefox 似乎正在使用 font weight lighter 作为默认值 我所追求的就是字体在 Ch
  • 在 CDN 上托管 Javascript/CSS 文件类似于 Google 托管 jQuery [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有任何主机 或者我是否可以在 Google 上托管我的文件 JS 和 CSS 以便它们被缓
  • 层命中测试仅在触摸层的下半部分时返回层

    我在图层支持的视图上有一个子图层 子图层的内容设置为图像引用并且是 25x25 矩形 当调用 TouchBegan 和 TouchMoved 方法时 我在超级层上执行命中测试 事实上 如果子层被触摸 命中测试方法确实会返回子层 但前提是图像
  • 终止管道中的上一个命令

    我正在运行这样的模拟 waf run scratch myfile awk f filter awk 我怎样才能杀死waf命令尽快filter awk检测到发生了某些事情 例如 在读取特定行之后 我无法改变waf or myfile 我只能
  • PHP 和 X.509 身份验证 - 检查证书颁发者

    我试图在我的网站上设置一个特定页面 只有经过 X 509 身份验证的人才能访问 问题是 我希望所有拥有由某个机构颁发的匹配证书的客户都可以使用它specific中间CA 我打算在一个自生成的根CA下有几个中间CA 但只有一个特定中间CA颁发
  • WCF 跟踪上未找到配置评估上下文警告

    我有一组托管在 NET 4 应用程序上的 WCF 服务 我手动创建 ServiceHost 类并开始侦听 TCP 端口 一切都按预期工作 但在服务器端的 WCF 跟踪中 我收到以下警告 未找到配置评估上下文 XML 跟踪如下
  • 强制执行 M-M 关系的触发器

    假设我有以下架构 DEPARTMENT DepartmentName BudgetCode OfficeNumber Phone EMPLOYEE EmployeeNumber FirstName LastName Department P
  • 正则表达式在一行上查找 A 而不是 B

    我正在寻找一个正则表达式来搜索我的 python 程序以查找其中的所有行foo 但不是bar 作为关键字参数传递到方法中 我正在尝试前瞻和后瞻断言 但运气不佳 有什么帮助吗 Thanks 如果你有一个字符串foo您要查找的字符串和另一个字符
  • 无法通过 CMake 链接 Boost 1.63.0

    我想做的是 正如你可以从标题中猜到的那样 通过 CMake 链接 Boost 库 我正在使用 CLion 编写跨平台代码 所以我没有其他机会 我确信我正确构建了所有内容 因为当我在 Visual Studio 中使用它时 它完全可以正常工作
  • 使用 python opencv 跟踪白色

    我想使用网络摄像头和 python opencv 跟踪白色 我已经有了跟踪蓝色的代码 frame cap read hsv cv2 cvtColor frame cv2 COLOR BGR2HSV define range of blue
  • 有没有办法在触发 lambda 之前过滤 AWS DynamoDb Stream?

    因此 我们有几个 lambda 来监听数据库上的更改 在每个 lambda 中 我们必须在一开始就进行过滤 因为这个特定的 lambda 不关心所有更改 只关心特定的更改 更明确地说 我们正在应用事件源 并且 lambda 应该是事件处理程