【问题标题】:AWS Lambda Java, S3 configAWS Lambda Java,S3 配置
【发布时间】:2016-07-26 00:05:45
【问题描述】:

我正在尝试遵循 AWS Lambda Java 示例:http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html#with-s3-example-deployment-pkg-java

创建了新类 LambdaFunctionHandler 以插入 S3 映像修改 lambda 代码。将aws-lambda-java-core 1.0.0、aws-lambda-java-events 1.0.0、maven-shade-plugin 2.4.3 和aws-java-sdk-core 1.11.0 添加到maven 依赖项。创建jar,上传并测试lambda后报错。

出现如下错误:

START RequestId: 9b800497-52c2-11e6-a2c2-416f188f3ed0 Version: $LATEST
Error loading class LambdaFunctionHandler: com/amazonaws/services/s3/AmazonS3: class java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError: com/amazonaws/services/s3/AmazonS3
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.services.s3.AmazonS3
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

我使用这些版本号是因为其他答案似乎引用了这些特定版本。

为了确保我不只是错误地使用了 maven,我使用 Eclipse 的 AWS 插件创建了一个 AWS Lambda 项目,但仍然导致同样的错误。

【问题讨论】:

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


    【解决方案1】:

    需要添加de S3依赖

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>1.11.0</version>
    </dependency>
    

    或者你可以把

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>1.11.0</version>
    </dependency>
    

    这个有所有服务的库。

    【讨论】:

      【解决方案2】:

      确保您的 POM 中有所有依赖项,而且对于 AWS lambda,您需要一个包含这些依赖项的 fat jar。如果你认为你的类路径中有所有依赖项,那么看看是否包含下面的 shade 插件对你有帮助(使用 maven-shade-plugin 创建的 fat jar):

      <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-shade-plugin</artifactId>
                      <version>3.0.0</version>
                      <executions>
                          <execution>
                              <phase>package</phase>
                              <goals>
                                  <goal>shade</goal>
                              </goals>
                              <configuration>
                                  <finalName>${project.artifactId}</finalName>
                              </configuration>
                          </execution>
                      </executions>
                  </plugin>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-11
        • 2019-01-18
        • 2020-02-08
        • 2018-02-22
        • 1970-01-01
        • 2019-07-02
        • 2018-08-07
        • 2018-06-02
        相关资源
        最近更新 更多