无法理解在开发 AWS Lambda 函数时使用哪个 Java SDK

Unable to understand which Java SDK to use when developing AWS Lambda Function

当我学习有关部署 AWS Lambda 函数的教程时,我在它的示例中看到它使用了包含接口 Speechlet 的 AWS Java SDK。

这是示例的屏幕截图:

而且官方文档也说我应该在这里使用Speechlet接口:https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/handling-requests-sent-by-alexa

但不幸的是,当我安装AWS Toolkit for Eclipse时,其工具包中并没有这样的界面。我也从官方网站下载了 AWS Java SDK,但找不到 Speechlet 界面。

因此,我再次搜索了一些关于如何使用 java 创建 Lambda 函数的教程,然后我想出了这个:http://docs.aws.amazon.com/toolkit-for-eclipse/v1/user-guide/lambda-tutorial.html

本教程使用JavaSDK,无Speechlet界面!这真的让我感到困惑,因为在它的其他文档中它清楚地说明它有一个 Speechlet 界面,而现在它没有。我不知道如何继续这个。

您的 AWS Lambda 函数需要在 Java 中支持的最低功能是 class 实现具有以下签名的方法:

outputType handler-name(inputType input) {
   ...
}

如果您的签名看起来像这样,则不需要第三方库。你可以有一个看起来像这样的 Lambda 处理程序,它可以正常工作。

package LambdaExample;

public class Hello {
    public String lambdaHandler(String name) {
        return String.format("Hello %s!", name);
    }
}

在重要的用法中,您可能会看到看起来更像这样的处理程序签名:

outputType handler-name(inputType input, Context context) {
   ...
}

Context object 可用于检索有关您的 Lambda 处理程序的信息,以及可用于将有关您的处理程序的信息记录到 Cloudwatch 的记录器。

Context 类型在 com.amazonaws.services.lambda.runtime.Context 中定义,它由 aws-lambda-java-core 提供,是 AWS 为使用 Java/JVM 与 Lambda 一起发布的一组库的一部分语言。 aws-lambda-java-core 与 Java 的 AWS 开发工具包分开。

您 运行 似乎是在使用非常具体的资源。您的图片显示了用于构建自定义 Alexa 技能并将其部署到 Lambda 的代码。如果您正在构建 Alexa 技能,那么您还需要包括 alexa-skills-kit SDK,它提供了您看到的 Speechlet 界面。 Alexa Skills Kit SDK 也与 Java.

的 AWS SDK 分开

假设您的项目使用 Maven 作为项目 management/dependencies,将以下内容添加到 <dependencies> 部分应该可以让您使用 Lambda 和 Alexa:

<dependency>
  <groupId>com.amazon.alexa</groupId>
  <artifactId>alexa-skills-kit</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</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.3.0</version>
</dependency>
<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-lambda-java-log4j</artifactId>
  <version>1.0.0</version>
</dependency>