当前位置: 首页 > 知识库问答 >
问题:

使用AWS Java Sdk集成AWS Lambda和S3

锺离森
2023-03-14
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";
    }

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

我有什么选择?我如何使用他们的SDK的更新版本来实现类似的功能。

共有1个答案

邬宏扬
2023-03-14

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

有关更多细节,请参见本文。

如果要使用它们的帮助程序库,请使用以下依赖项坐标:

<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>1.3.0</version>
 类似资料:
  • 我第一次使用Spring Boot,正在为我的应用程序设置分布式跟踪。我已经将Spring Cloud Slueth添加到我的应用程序中,当调用我的endpoint时,我可以看到生成的跨度和跟踪,但是我很难让它与Aws Sdk 2. x集成(使用Dynamo异步客户端)。我有几个关于集成的问题: 通过aws sdk跟踪http调用的最佳方式是什么。我能做到这一点的唯一方法是实现ExecutionI

  • 我引用了这个git项目来使用配置单元表集成cassandra数据,我将适当的cassandra JAR复制到配置单元库文件夹中,但是在运行对cassandra的查询时,我得到了以下错误,请帮助我解决它。 https://github.com/milliondreams/hive/tree/cas-support-cql/cassandra-handler HIVE>创建外部表消息(row_key字

  • 我已经在jenkins和ZAPI安装了Zephyr插件,在jira安装了Zephyr插件,并且能够建立连接 但是在下拉列表中我无法查看jira项目 有人能帮我解决这个问题吗?在构建后无法在下拉列表中查看项目名称

  • 现在我们来试一试从代码托管平台上拉取代码,并进行镜像构建和持续集成。 创建新项目并构建镜像 在控制台点击「代码构建」,然后在「代码构建」的界面中点击「创建新项目」。 第一步:填写项目名称 在「项目名称」上填写该项目的 Docker 镜像名称。 第二步:选择代码库 从第三方代码托管平台中选择我们想要构建的代码库,如果找不到需要的代码库可以点击右上角刷新按钮同步列表。 第三步:开启持续集成 持续集成是

  • 服务商品的集成和使用 项目集成 项目中使用 服务商品的集成和使用 更新时间:2018-03-26 17:38:55 项目集成 首先从“已购买”页出发,选择对应的服务商品,点击操作栏的“项目集成”,即可打开以下项目集成界面。 在项目集成页,用户可以选择将购买的服务配额总量,按照不同的配额分配到自己名下的各个项目中去,从而管理各个项目中服务的用量。 点击“新增项目集成”,即可选择项目进行用量配额的添加

  • 硬件商品的集成和使用 项目集成 项目中使用 硬件商品的集成和使用 更新时间:2018-03-26 17:38:32 项目集成 首先从“已购买”页出发,选择对应的硬件商品,点击操作栏的“项目集成”,即可打开以下项目集成界面。 在项目集成页,用户可以选择将购买的硬件产品总量,按照不同的配额分配到自己名下的各个项目中去,从而管理各个项目中硬件的用量。 点击“新增项目集成”,即可选择项目进行用量配额的添加