小编ble*_*h10的帖子

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

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

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

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

lambdaA handler:
const eventsToBeProcessed = events.filter(
   (event) => event.eventName === 'EventA'
);
Run Code Online (Sandbox Code Playgroud)

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

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

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

编辑:

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

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

amazon-web-services event-sourcing amazon-dynamodb aws-lambda

8
推荐指数
1
解决办法
7478
查看次数

使用 Google Jib 和 Kubernetes 时添加 SSL 证书

因此,我尝试为我的项目添加 ssl 证书,在我的本地计算机上,我只需按照 keytool 命令即可添加它,然后它就可以工作了。但是当我尝试在拥有 k8s 集群的机器上执行相同的操作时,它似乎不起作用。

我看到几个人将 cer 添加到他们的 docker 文件中的 cacerts 中,但我没有,因为我正在使用谷歌的 Jib,所以我不确定它应该如何从这里开始,或者这是我应该的配置添加到我的 k8s 部署文件中吗?

java ssl-certificate kubernetes dockerfile jib

7
推荐指数
1
解决办法
5058
查看次数

RandomNumberGenerator vs Aes生成密钥.在使用AES加密时,我应该使用哪个来获取密钥(C#)

所以我在线检查一些实现,我注意到有些人使用以下方式生成密钥:

        using (var random = RandomNumberGenerator.Create())
        {
            var key = new byte[32];
            random.GetBytes(key);
        }
Run Code Online (Sandbox Code Playgroud)

而其他人则使用AES类中构建的generateKey方法:

        using (Aes myAes = Aes.Create())
        {
            myAes.GenerateKey();
            var key = myAes.Key;
        }
Run Code Online (Sandbox Code Playgroud)

它们都在System.Security.Cryptography库中,只是想知道它们之间是否存在实际差异,如果是,我应该选择哪一个?

c# random encryption aes

4
推荐指数
1
解决办法
294
查看次数

有没有办法在redis缓存中创建类似文件夹的层次结构?

所以我在我的 c# webapi 中使用 redis 缓存并且能够实现类似的层次结构会让我的生活更轻松(像这样:

a-> key1
    b-> c ->key2
            key3
        d ->...
Run Code Online (Sandbox Code Playgroud)

)

我的另一个选择是用键制作一个类似树的方法,其中 a 会给我另外两个键,一个用于键,另一个用于 b 等等(但会一团糟)

c# caching redis asp.net-web-api

3
推荐指数
2
解决办法
5566
查看次数

如何停止使用 Optional IsPresent() 乱扔代码?

所以我完全使用 isPresent 而不是使用 == null 来检查对象是否成功返回,但我觉得我陷入了用 isPresent 乱丢代码的坑。

所以假设我有一堆不同的端点来检索或更新模型。我希望在他们每个人的开头都没有 isPresent 检查这个对象是否存在!

例子:

    Optional<Object> myObject = objectRegistry.get(name);
    if (myObject.isPresent()) {
        doSomething();
    } else {
        throw new ObjectNotFoundException(stampName);
    } 
Run Code Online (Sandbox Code Playgroud)

我正在寻找解决这种乱扔垃圾的最佳实践,我可以想象其中一种解决方案是使用一种方法来执行此检查,并且我可以随时调用它,而调用它的其他方法将不得不抛出 ObjectNotFoundException

java coding-style code-cleanup optional

0
推荐指数
1
解决办法
64
查看次数