java 用于集成测试的AWS S3本地服务器

hyrbngr7  于 2023-02-07  发布在  Java
关注(0)|答案(8)|浏览(314)

我有一些代码,上传和下载文件使用AWS S3(使用Java AWS SDK)。我希望能够写一些测试,我想知道是否有人有任何好的选择。理想情况下,我想一个轻量级的S3服务器,本地运行,可以快速启动,不需要系统配置(测试需要由Jenkins运行)。
到目前为止,我已经考虑了一些选项:

  1. FakeS3-几乎正是我所寻找的,然而,当使用Java AWS SDK时,你必须编辑你的/etc/hosts文件并重新启动网络,这不是我在Jenkins中可以做的事情。另外,当尝试它时,似乎有一个错误,创建日期字段格式错误,这使我的客户端抛出异常,这并没有激发我对项目的信心。
    1.Ceph-实现S3 API,但安装需要几分钟
62o28rlo

62o28rlo1#

您可以尝试localstack,这是一个开源的本地AWS云堆栈,它提供了几个AWS服务的实现,包括S3。
它看起来像是GitHub上非常流行的开源项目。

mspsb9vt

mspsb9vt2#

您可以尝试在您的笔记本电脑/系统上安装minio服务器,它是开源的,并且是单一的静态二进制文件。服务器是S3兼容的。然后您可以尝试minio-java client library的所有操作,下面是基本的operations example
安装迷你服务器[GNU/Linux]

$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
$ chmod 755 minio
$ ./minio --help

希望对您有所帮助免责声明:我为Minio工作

iswrvxsc

iswrvxsc3#

晚回答,将主要是对Docker用户有用.有一个伟大的S3兼容的存储软件称为Riak CSdocker-riak-cs图像,允许快速启动服务器.
我已经用它进行本地开发和集成测试近两年了,取得了巨大的成功,它有一些限制,但没有什么大的问题,请参阅API / compatibility documentation
如果您需要无Docker-less解决方案,您可以在本地为每个构建进行设置,所有设置和配置脚本都可以在docker-riak-cs存储库中找到。

qni6mghb

qni6mghb4#

Minio提供了(在我看来)最好的一组特性、灵活性和易用性。它可以作为Docker容器或二进制文件用于主要操作系统。
要从minio开始,非常简单:

  • 下载
  • 启动二进制minio server /data
  • 使用它

它可以完美地与s3cmd一起工作,并且为流行的编程语言提供了很好的文档。

ubof19bj

ubof19bj5#

我为Ladon启动了一个S3服务器API项目,它包含一个简单的文件系统库。它是一个Java项目,包含一个用于简单测试的Sping Boot Starter。不是所有的S3 API特性都被支持,但我会根据要求添加它们。它在Github上:Ladon S3 Server

cvxl0en2

cvxl0en26#

findify/s3mock-一个进程内的Java S3服务器,旨在测试。没有测试它-只是偶然发现它。不需要Docker,这可能是一个优势。HTH!:)

tvokkenx

tvokkenx7#

minio和localstack我都试过了,localstack的问题是s3 bucket中的存储不是持久性的。我想只有当你有pro版本的时候它才会支持percistency。minio非常容易使用,而且它是免费的持久性的。

fae0ux8s

fae0ux8s8#

我为不同的用例创建了不同的bucket,例如:my-dev-bucket和my-prod-bucket。我不知道这是否符合你的使用标准,但你可能想考虑一下。附带的好处是它使你的预生产和生产代码遵循完全相同的流程。

相关问题