什么是适用于 Lambda 的 AWS SDK V2 Maven 库?

CC.*_*CC. 4 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>
Run Code Online (Sandbox Code Playgroud)

而我之前的配置工作

<dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-lambda-java-core</artifactId>
            <version>1.2.0</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

似乎无法找到我应该导入的内容来拥有丢失的类。还是在 V2 中,有不同的签名?

这是我的课:

public class Cron implements RequestHandler<Object, Object> {

    public Object handleRequest(final Object input, final Context context) {
Run Code Online (Sandbox Code Playgroud)

感谢您的任何指针。

抄送

NS *_*oit 5

看起来您的类路径中仍然需要同时拥有 SDK v1 和 SDK v2。

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

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

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

对于Lambda 处理程序也是如此

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

  • 导入这两个 SDK 会不必要地增加部署包并增加冷启动时间。有些包仅包含所需的类子集 - 请参阅我的答案。 (3认同)

dsk*_*rvk 5

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

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