如何在docker-compose中设置S3v2 api为Minio (AWS S3本地)



我的原始docker-compose是:

s3:
image: minio/minio
command: server /data --console-address ":9001"
ports:
- 9000:9000
- 9001:9001
networks:
- lambda-local

是否可以在docker启动时默认设置S3v2?

编辑

我在生产中使用一些Python AWS Lambda和AWS S3 (S3v2)。我的代码已经准备好只使用S3v2了。

在我的计算机中(用于开发单元测试),我只想切换S3由docker-compose启动的Minio。

我不想更改Lambda代码。我需要更改Minio本地安装(docker-compose)。

Minio对S3的更改必须对我的应用程序透明。

所以MinIO服务器同时支持S3v4和S3v2,而不需要任何额外的配置。正如Prakash所指出的,这通常是一个SDK设置。

你可以测试这个自己使用mc命令行工具:

mc alias set --api "S3v4" myminiov4 http://localhost:9000 minioadmin minioadmin
mc alias set --api "S3v2" myminiov2 http://localhost:9000 minioadmin minioadmin
echo "foo" > foo.txt
echo "bar" > bar.txt
mc mb myminiov4/testv4
mc mb myminiov2/testv2
mc cp foo myminiov4/testv4/foo
mc cp bar myminiov2/testv2/bar

您可以使用任意一个别名来读取任意一个文件-一个使用签名v4,另一个使用签名v2。

关于如何设置此值,您应该遵循您首选SDK的文档。值得注意的是,Sv2已被弃用——较新的SDK版本甚至可能不支持它。因此,首先需要确认首选SDK的版本是否支持Sv2,然后在连接到MinIO时启用它。例如,我没有找到在AWS Java SDK文档中设置它的明显方法(尽管可能我只是错过了它)。

MinIO的GO SDK似乎通过覆盖来支持它,但我还没有自己测试过。

如果您有一个特定的应用程序,其中要求Sv2不能工作,那么您需要在获得进一步的指导之前提供更多的细节。从MinIO的角度来看,我不知道这两个签名版本有任何特定的限制。

免责声明:我为MinIO工作。

最新更新