在AWS Java SDK 1.10.2中,com.amazonaws.services.lambda.runtime包不存在。

28
我正在尝试使用Java入门(在Java中编写AWS Lambda代码)页面上的示例代码,但是卡住了,因为似乎缺少com.amazonaws.services.lambda.runtime包。
以下是示例代码:
package example;

import com.amazonaws.services.lambda.runtime.Context;      //package does not exist error
import com.amazonaws.services.lambda.runtime.LambdaLogger; // package does not exist error
import com.amazonaws.services.s3.AmazonS3;       // import works (not needed, I've put them in for testing import)
import com.amazonaws.services.s3.model.S3Object; // import works (not needed, I've put them in for testing import)

public class Hello {
    public String myHandler(int myCount, Context context) {
        LambdaLogger logger = context.getLogger();
        logger.log("received : " + myCount);
        return String.valueOf(myCount);
    }
}

我在Netbeans和命令行中(通过-cp参数指定aws sdk)从代码的前两个导入中遇到了相同的错误:

包com.amazonaws.services.lambda.runtime不存在

请注意,从SDK导入其他软件包正常工作,如上面代码中的第三个和第四个导入的S3软件包(我只是为了测试而添加的)。

我正在使用AWS Java SDK的版本1.10.2(aws-java-sdk-1.10.2.zip),从http://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip下载。

任何指示/建议将不胜感激。谢谢!

7个回答

44

这两个类都包含在aws-lambda-java-core jar中,该jar与AWS SDK分开分发。如果您没有使用maven/gradle/其他可以直接从maven central拉取的构建系统,则可以从上面的链接中的maven central下载它。


谢谢David - 我在AWS上找不到下载链接,但是按照你的建议从Maven获取了链接,现在导入已经可以工作了!干杯。 - Arthur
@David- 我也遇到了类似的问题。当我使用命令“sam local start-api”从终端启动应用程序时,它可以正常工作,但是当我右键单击“template.yml”文件启动时,它会出现此错误。 - Sunny

8
  1. Add AWS plugins within eclipse from market place, make aws lambda project.
  2. Use below three dependencies to make fat jar.

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-lambda</artifactId>
        <version>1.11.76</version>
    </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>
    

3

经过一番搜索,我在http://mvnrepository.com/artifact/com.amazonaws/aws-lambda-java-core/1.1.0发现了com.amazonaws.services.lambda.runtime.Context。(我更喜欢使用这个网站而不是search.maven.org。mvnrepository.com直接提供了sbt的构建命令,非常贴心。)

这个类不在aws-java-sdk-lambda中,也不在aws-java-sdk-core或aws-java-sdk中。


2

1
对于我来说,解决Intellij的方法是删除所有的.iml文件并且使缓存无效/重启

1

Arthur,你试图使用AWS Lambda的Java代码示例来操作另一个产品Amazon AWS SDK For Java

请阅读AWS Lambda欢迎页面,可能需要按照步骤(创建帐户等)下载包含您的类(Context,LambdaLogger)的软件包。


这里强烈反对仅提供链接的回答,因为这些链接在将来可能失效。我建议您编辑回答并引用您引用的来源。 - Anirudh Sharma
感谢Battr澄清了AWS SDK库和AWS Lambda库之间的区别。 - Arthur

0

此外,如果您想要从Alexa技能SDK中的示例Lamba函数记录到CloudWatch,则需要包括此软件包。 - Nantoka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接