什么是Lambda的AWS开发工具包V2 Maven库?

时间:2020-04-11 12:47:51

标签: java amazon-web-services maven aws-lambda

我正在尝试更新我的项目,以便通过Bom配置使用SDK v2。 我已经更新了pom文件,但是现在找不到RequestHandlerContext。 这是我的Maven配置文件

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>bom</artifactId>
                <version>2.1.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>lambda</artifactId>
        </dependency>
</dependencies>

我的配置在起作用之前

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

似乎找不到我应该导入的内容以缺少类。 还是在V2中,有一个不同的签名?

这是我的课程:

public class Cron implements RequestHandler<Object, Object> {

    public Object handleRequest(final Object input, final Context context) {

感谢任何指针。

抄送

2 个答案:

答案 0 :(得分:2)

似乎您的类路径上仍然必须同时拥有SDK v1和SDK v2。

例如,查看Lambda Java documentation,您会看到所有导入仍然以com.amazonaws(SDK v1)而不是software.amazon(SDK v2)开头。

他们列出的示例之一是blank-java,它们被描述为“具有事件库,高级日志记录配置以及调用Lambda API来检索账户的Java 2.x的AWS开发工具包的Java函数。设置”

如果您查看该示例应用程序的pom.xml,则会看到com.amazonawssoftware.amazon软件包混合在一起。

Lambda handler类似。

所以他们要么没有将所有内容都移植到SDK v2,要么他们仍然希望您使用SDK v1中的接口-然后可以从SDK v2中使用更多功能代码(非接口代码)。

答案 1 :(得分:0)

this answer 类似,您不必将所有 SDKv1 都导入到您的项目中,而应继续仅导入 aws-lambda-java-core(除了 SDKv2)。它包含足以实现入口点的类的子集,具有与 v1 中相同的完全限定名称。

此外,如果您需要像 S3Event 这样的事件接口,您可以引入 aws-lambda-java-events