AWS java sdk 1.10.2 中不存在包 com.amazonaws.services.lambda.runtime

Posted

技术标签:

【中文标题】AWS java sdk 1.10.2 中不存在包 com.amazonaws.services.lambda.runtime【英文标题】:package com.amazonaws.services.lambda.runtime does not exist in AWS java sdk 1.10.2 【发布时间】:2015-09-18 02:31:39 【问题描述】:

我正在尝试Getting Started (Authoring AWS Lambda Code in Java) 页面中的 Java 代码示例,但由于 com.amazonaws.services.lambda.runtime pacakge 似乎丢失了

这里是示例代码:

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 下载

任何方向/建议将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

这两个类都包含在 aws-lambda-java-core jar 中,该 jar 与 AWS 开发工具包分开分发。如果您不使用 maven/gradle/其他可以从 maven Central 本地提取的构建系统,您可以从上面的链接中的 maven Central 下载它。

【讨论】:

谢谢大卫 - 我很难从 AWS 中找到下载链接,但能够按照您的建议从 Maven 获取它,但导入不起作用!干杯。 @David- 我也面临着类似的问题。当我使用 cmd - 'sam local start-api' 从终端盯着应用程序时。它工作正常,但是当我通过右键单击“template.yml”文件开始时。它给出了这个错误【参考方案2】:
    在 Eclipse 中从市场添加 AWS 插件,制作 aws lambda 项目。

    使用下面三个依赖来制作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 中。

【讨论】:

【参考方案4】:

对于那些正在使用 sbt 的人:

libraryDependencies ++= Seq(
  "com.amazonaws" % "aws-java-sdk" % "1.11.241",
  "com.amazonaws" % "aws-lambda-java-core" % "1.2.0"
)

查看最新版本的链接:

https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk https://mvnrepository.com/artifact/com.amazonaws/aws-lambda-java-core

【讨论】:

【参考方案5】:

亚瑟,

您尝试将来自 AWS Lambda 的 java 代码示例用于另一个产品 Amazon AWS SDK For Java。

请阅读 AWS Lambda 欢迎页面,也许在(创建帐户和其他)步骤之后,您可以下载包含您的类(上下文、LambdaLogger)的包

【讨论】:

这里非常不鼓励仅链接的答案,因为链接将来可能会失效。我建议您使用您引用的来源中的引用来编辑您的答案。 感谢 Battr 阐明 AWS SDK 库和 AWS Lambda 库之间的区别。【参考方案6】:

我发现 com.amazonaws.services.lambda.runtime.LambdaLogger 在:https://mvnrepository.com/artifact/com.amazonaws/aws-lambda-java-log4j/1.0.0

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-log4j</artifactId>
    <version>1.0.0</version>
</dependency>

【讨论】:

此外,如果您希望 Alexa 技能 SDK 中的示例 Lamba 函数登录到 CloudWatch,则需要包含此程序包。

以上是关于AWS java sdk 1.10.2 中不存在包 com.amazonaws.services.lambda.runtime的主要内容,如果未能解决你的问题,请参考以下文章

在iOS Swift中不使用AWS SDK在Amazon S3存储桶中上传的背景图像(背景模式)

AWS lambda:如果log4j.xml中不存在环境变量,有没有办法设置默认值?

ruby-aws-sdk 记录在删除后仍然存在

AWS SDK Java 版本 2 - 是不是有与版本 1 中的 doesObjectExist() 等效的版本?

AWS CloudFormation:默认 VPC“vpc”中不存在安全组“sg-”

如何使用aws java sdk将文件从S3存储桶从一个区域复制到另一个区域?