我有一个配置为启用EventBridge事件的S3存储桶,该规则触发一个lambda

我目前有一个配置为启用 EventBridge 事件的 S3 存储桶,并且我有一个 EventBridge 规则,该规则触发一个阶梯函数,该阶梯函数又触发一个 lambda。

我想将我在 lambda 中获得的输入映射到 AWS Java SDK (com.amazonaws:aws-lambda-java-events) 中的事件类之一,但我运气不佳。

这是我的 lambda 在我的 Java 代码中的签名:

public class DeviceAssociationLambda implements RequestHandler {
    @Override
    public OutputObject handleRequest(S3Event input, Context context) {

当我的 step 函数调用此 lambda 时,它会发送如下所示的有效负载:

图片[1]-我有一个配置为启用EventBridge事件的S3存储桶,该规则触发一个lambda-唐朝资源网

{
  "version": "0",
  "id": "e31fcb40-aa08-11ec-b909-0242ac120002",
  "detail-type": "Object Created",
  "source": "aws.s3",
  "account": "123456789098",

  "time": "2022-03-22T17:07:44Z",
  "region": "eu-central-1",
  "resources": [
    "arn:aws:s3:::my-test-bucket"
  ],
  "detail": {

图片[2]-我有一个配置为启用EventBridge事件的S3存储桶,该规则触发一个lambda-唐朝资源网

"version": "0", "bucket": { "name": "my-test-bucket" }, "object": { "key": "foo/bar.json", "size": 685, "etag": "af87c63487cc2ff6323e67ddd234f44", "sequencer": "00827F2232287F2343" }, "request-id": "LK63256WW7E66YCC4", "requester": "123456789098", "source-ip-address": "123.123.123.123", "reason": "PutObject" } }

尝试调试后,我发现我的 lambda 中的 S3Event 参数始终为空。这可能是因为它期望输入 JSON 格式不同(可能是:)

所以,我的问题是,Java SDK 中是否有任何标准事件对象可以处理我从 EventBridge 获得的 JSON?当然,我可以在 step 函数中对 JSON 进行一些操作,例如将 lambda 输入限制为“detail”块(如果有帮助的话)。

或者我是否只需要创建自己的输入类来映射到我作为输入获得的这个 JSON 结构?

© 版权声明
THE END
喜欢就支持一下吧
点赞95赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容