Elastic Beanstalk中的Springboot服务器创建了我可以'我看不到



我有一个Springboot服务器,它被部署到AWS中的Elastic Beanstalk环境中。基本功能是:

1. Upload a file to the server
2. The server processes file by doing some data manipulation.
3. Then the file that is created is sent to a user via email.

奇怪的是,上面提到的功能正在运行。输出文件已成功发送到我的电子邮件收件箱但是,当SSHed进入实例时,无法看到该文件。为数据操作创建的整个目录不在那里。我到处都找过了。

为了测试这一点,我甚至在SpringbootController中创建了一个简单的函数,如下所示:

@GetMapping("/")
public ResponseEntity<String> dummyMethod() {
// TODO : remove line below after testing
new File(directoryToCreate).mkdirs();
return new ResponseEntity<>("Successful health check. Status: 200 - OK", HttpStatus.OK);
}

如果我使用Postman来访问这个端点,则无法通过我SSHed所在的终端看到目录。程序正在运行,所以我知道代码在这个意义上是正确的,但它就像文件和目录对我来说是不可见的

此外,如果我在本地运行服务器(使用Windows或Linux(并达到这个端点,那么目录就会成功创建。

更新:我在/var/app的环境中找到了应用程序所在的位置。但我的文件夹和文件仍然不在那里,只有源代码文件等在那里。我的服务器应该创建的文件仍然丢失。我甚至可以在创建文件后打印出文件的绝对路径,但该文件仍然不存在。这里有一个例子:

Files.copy(source, dest);
logger.info("Successfully copied file to: {}", dest.getAbsolutePath());

将打印。。。

Successfully copied file to: /tmp/TESTING/Test-Results/GVA_output_2021-12-13 12.32.58/results_map_GVA.csv

该路径在我的服务器中不存在,但我可以在处理后通过服务器代码的电子邮件将其发送给我。但是,如果我SSH进入实例并转到该路径,则什么都不存在。

如果我使用命令:find . -name "GVA*"(搜索我要查找的文件(,它会打印以下内容:

./var/lib/docker/overlay2/fbf04e23e39d61896a1c935748a63f2d3836487d9b166bae490764c30b8870ae/diff/tmp/TESTING/Test-Results/GVA_output_2021-12-09 18.15.59
./var/lib/docker/overlay2/fbf04e23e39d61896a1c935748a63f2d3836487d9b166bae490764c30b8870ae/diff/tmp/TESTING/Test-Results/GVA_output_2021-12-13 12.26.34
./var/lib/docker/overlay2/fbf04e23e39d61896a1c935748a63f2d3836487d9b166bae490764c30b8870ae/diff/tmp/TESTING/Test-Results/GVA_output_2021-12-13 12.32.58
./var/lib/docker/overlay2/fbf04e23e39d61896a1c935748a63f2d3836487d9b166bae490764c30b8870ae/merged/tmp/TESTING/Test-Results/GVA_output_2021-12-09 18.15.59
./var/lib/docker/overlay2/fbf04e23e39d61896a1c935748a63f2d3836487d9b166bae490764c30b8870ae/merged/tmp/TESTING/Test-Results/GVA_output_2021-12-13 12.26.34
./var/lib/docker/overlay2/fbf04e23e39d61896a1c935748a63f2d3836487d9b166bae490764c30b8870ae/merged/tmp/TESTING/Test-Results/GVA_output_2021-12-13 12.32.58

但这看起来像是在跟踪文件版本之间的差异,因为我在文件路径中看到了diffmerged。我只想找到那个文件实际所在的位置。

如果您需要将上传的文件存储在Spring BOOT应用程序的某个位置,请考虑使用Amazon S3存储桶,而不是将文件写入服务器上的文件夹。例如,假设您使用的是Photo应用程序,照片可以通过Spring BOOT应用程序上传。使用Amazon S3 Java API将文件存储在Amazon S3存储桶中,而不是将其放在服务器上的目录中。

下面是一个使用SpringBOOT应用程序并通过将上传的文件放在bucket中来处理上传文件的示例。

创建一个动态web应用程序,使用AWS SDK for Java 分析照片

此示例应用程序还向您展示了如何使用SES API通过电子邮件向用户发送数据(本例中为报告(。

相关内容

最新更新