您的 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-core 提供,这是 AWS 发布的一组库的一部分,用于使用 Java/JVM 语言与 Lambda 一起工作。 aws-lambda-java-core 独立于适用于 Java 的 AWS 开发工具包。
您遇到的似乎是使用非常特定的资源的情况。您的图像显示了用于构建自定义 Alexa 技能并将其部署到 Lambda 的代码。如果您正在构建 Alexa 技能,那么您还需要包含 alexa-skills-kit SDK,它提供了您看到的 Speechlet 界面。 Alexa Skills Kit SDK 也独立于 AWS SDK for Java。
假设您的项目使用 Maven 进行项目管理/依赖项,将以下内容添加到 <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>