用于创建 Lambda 的 AWS Java 开发工具包版本

Posted

技术标签:

【中文标题】用于创建 Lambda 的 AWS Java 开发工具包版本【英文标题】:AWS Java SDK Version For Creating a Lambda 【发布时间】:2019-05-04 01:43:19 【问题描述】:

我正在尝试按照here 描述的指南开发 AWS Java lambda 函数,该指南描述了 RequestHandler 接口的实现,还引用了 AWS-lambda-java-core 库。但是,我尝试使用推荐的最新 SDK here,但这完全不同,RequestHandler 接口似乎不再存在。

我不清楚我需要的 java 库的名称和版本是什么。是否有关于所有不同版本的 AWS java 库以及任何更新示例的指南?我不得不承认我对 AWS Java 库版本和命名完全感到困惑,并且不完全知道我需要添加哪些/什么作为依赖项才能在 Java 中创建一个简单的 AWS Lambda 函数。

【问题讨论】:

【参考方案1】:

但是我尝试使用推荐的最新 SDK here,但这完全不同,RequestHandler 接口似乎不再存在。

您使用了错误的依赖项。这是一个通过其 REST API 使用 AWS 服务的 SDK,例如:

将对象放入 S3 列出 EC2 实例 从 AWS DynamoDB 中删除项目 调用 Lambda

即这是一个用于处理各种 AWS 服务的 SDK。它由许多库组成,例如aws-java-sdk-s3aws-java-sdk-dynamodbaws-java-sdk-lambda 是其中之一,但它用于与 Lambda API 交互,而不是用于编写 Lambda。

编写 Lambda 所需的库是:

com.amazonaws:aws-lambda-java-core com.amazonaws:aws-lambda-java-events

如您所见,它们是不同的。首先提供您正在寻找的Handler 接口,然后包含Lambda 可以接受的各种事件作为输入:SNS 事件、CloudWatch 计时器和so on。

【讨论】:

【参考方案2】:

来自here:

Lambda 支持两种创建处理程序的方法:

直接加载处理程序方法,无需实现接口。本节介绍了这种方法。

实现作为 aws-lambda-java-core 库的一部分提供的标准接口(接口方法)。有关更多信息,请参阅利用预定义接口创建处理程序 (Java)。

这里是aws-lambda-java-core

【讨论】:

这个库是 sdk 库的一部分吗?我还应该在我的问题中说,我正在尝试遵循此处的建议以使用 Maven BOM:docs.aws.amazon.com/sdk-for-java/v2/developer-guide/… 您能否为您的方法“直接加载处理程序方法而无需实现接口。本节描述此方法”链接或显示一个示例。我从来没有见过这样做的,我不确定这是否在任何地方都有记录。【参考方案3】:

我有类似的问题,如何找到适用于 AWS JDK V2 的新依赖项和版本?

我以前用过

<!--  original working fine with V1 -->
        <groupId>com.amazonaws</groupId> 
        <artifactId>aws-java-sdk-lambda</artifactId>
        <version>1.10.21</version> 

       <groupId>software.amazon.awssdk</groupId>
        <artifactId>lambda</artifactId>
        <version>2.16.60</version>          
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-core</artifactId>
         <version>1.1.0</version>
        
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-events</artifactId>
        <version>1.0.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-log4j</artifactId>
        <version>1.0.0</version>
     </dependency> 

AWS JDK V2 (software.amazon.awssdk) 中这些依赖项的等效项是什么?

【讨论】:

以上是关于用于创建 Lambda 的 AWS Java 开发工具包版本的主要内容,如果未能解决你的问题,请参考以下文章

从java lambda调用aws Step函数

pymssql 包不适用于 aws 中的 lambda

如何通过忽略未使用的资源从 aws cli 创建 aws java lambda 函数?

AWS lambda 和 Java 并发

是否可以重命名 AWS Lambda 函数?

AWS Lambda 与 Elastic Beanstalk