【问题标题】:AWS Lambda and S3 integration using AWS Java Sdk使用 AWS Java Sdk 集成 AWS Lambda 和 S3
【发布时间】:2018-02-22 10:51:54
【问题描述】:

我正在尝试开发一个 AWS lambda 函数,该函数在文件出现在特定 s3 存储桶中时触发。我正在尝试遵循 AWS Lambda documentation 中的示例,使用 aws-java-sdk-lambda 1.11.192、aws-java-sdk-s3 1.11.192。但是,不幸的是,这些示例使用了最新版本的 jar 中已弃用的 RequestHandler。

我的代码类似于this example

package example;

import java.net.URLDecoder;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.event.S3EventNotification.S3EventNotificationRecord;

public class S3GetTextBody implements RequestHandler<S3Event, String> {

public String handleRequest(S3Event s3event, Context context) {
    try {
        S3EventNotificationRecord record = s3event.getRecords().get(0);

        // Retrieve the bucket & key for the uploaded S3 object that
        // caused this Lambda function to be triggered
        String bkt = record.getS3().getBucket().getName();
        String key = record.getS3().getObject().getKey().replace('+', ' ');
        key = URLDecoder.decode(key, "UTF-8");

        // Read the source file as text
        AmazonS3 s3Client = new AmazonS3Client();
        String body = s3Client.getObjectAsString(bkt, key);
        System.out.println("Body: " + body);
        return "ok";
    } catch (Exception e) {
        System.err.println("Exception: " + e);
        return "error";
    }

  }
}

用于 lambda 的 aws sdk 的当前版本不包含 -

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;

我有哪些选择?如何使用较新版本的 sdk 实现类似的功能。

【问题讨论】:

    标签: java amazon-web-services amazon-s3 aws-lambda aws-java-sdk


    【解决方案1】:

    您不需要实现其帮助程序库中提供的RequestHandler 接口。只要输入和输出参数可以正确序列化,任何方法都可以工作。

    查看article了解更多详情。

    如果你想使用他们的帮助库,请使用以下依赖坐标:

    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-core</artifactId>
    <version>1.1.0</version>
    

    对于 S3 事件助手:

    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-events</artifactId>
    <version>1.3.0</version>
    

    它不在他们的主 aws-java-sdk 中,而是在其 own 存储库中。

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2020-06-14
      • 1970-01-01
      • 2020-02-08
      相关资源
      最近更新 更多