首页 > 解决方案 > 使用资源文件夹从 Eclipse 部署 AWS Lambda 函数的问题

问题描述

AWS 部署 AWS Java Lambda 函数的方式有问题。我有一个 Eclipse Maven 项目,我将其作为 Lambda 函数部署到 AWS。

这是我的结构的样子:

在此处输入图像描述

resources中,有一个表单文件夹,其中包含我需要加载的 PDF 文件。我可以通过以下方式在本地做到这一点:

ClassLoader classLoader = getClass().getClassLoader();
URL url =  classLoader.getResource( "forms/myform.pdf" );

但是,这仅在本地有效,在部署到 AWS 时无效。这是部署到 AWS 时的文件夹结构。

在此处输入图像描述

因此,我必须将我的代码更改为以下代码才能使其正常工作。

ClassLoader classLoader = getClass().getClassLoader();
URL url =  classLoader.getResource( "./resources/forms/myform.pdf" );

我怎样才能让它在本地和 AWS 中工作?在 AWS 和本地上运行时,我可以有一个位置的属性文件,但我试图避免必须有类似的东西。

对于部署到 AWS,我只是按照他们关于使用 Eclipse 工具包部署 lambda 函数的文档。我还问了一个类似的问题,认为这是我如何在本地运行它的问题。但现在我发现它与它的部署方式有关。

关于如何让它在本地或 AWS 上工作的任何想法?有没有办法更改 AWS 工具包以不同方式部署资源?

标签: javaeclipseamazon-web-servicesmavenaws-lambda

解决方案


我发现我可以更改 Maven 项目的资源:

<resources>
    <resource>
        <directory>src/main</directory>
        <filtering>false</filtering>
    </resource>
</resources>

然后我可以在本地和 AWS 中引用相同的路径:

ClassLoader classLoader = getClass().getClassLoader();
URL url =  classLoader.getResource( "./resources/forms/myform.pdf" );

推荐阅读