我正在尝试更新我的项目,以便通过Bom配置使用SDK v2。
我已经更新了pom文件,但是现在找不到RequestHandler
和Context
。
这是我的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) {
感谢任何指针。
抄送
答案 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.amazonaws
和software.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
。