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

时间:2016-12-29 13:13:44

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

当我关注部署AWS Lambda函数的教程时,我在其中看到它使用包含Speechlet接口的AWS Java SDK。

以下是该示例的屏幕截图:

enter image description here

官方文档还说明我应该在这里使用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

本教程使用没有Speechlet接口的Java SDK!这真让我感到困惑,因为在其他文档中它清楚地表明它有一个Speechlet接口,现在却没有。我不知道如何继续这个。

1 个答案:

答案 0 :(得分:2)

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

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-coreaws-lambda-java-core提供,alexa-skills-kit SDK是AWS发布的一组库的一部分,用于使用Java / JVM语言处理Lambda。 Speechlet与AWS SDK for Java分开。

您遇到的似乎是使用非常具体的资源的情况。您的图像显示了用于构建自定义Alexa技能并将其部署到Lambda的代码。如果您正在构建Alexa技能,那么您还需要包含{{3}},这是您提供的<dependencies>界面。 Alexa Skills Kit SDK也与AWS SDK for Java分开。

假设您的项目使用Maven进行项目管理/依赖项,将以下内容添加到<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> 部分可以让您使用Lambda和Alexa:

' & '