【问题标题】:How to set S3v2 api to Minio (AWS S3 local) in a docker-compose如何在 docker-compose 中将 S3v2 api 设置为 Minio(AWS S3 本地)
【发布时间】:2021-10-07 12:54:22
【问题描述】:

我的来源 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。

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

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

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

【问题讨论】:

  • 我认为是在sdk级别。请检查各自的sdk
  • @PrakashS,如何在 docker 文件上设置 SDK 版本?

标签: amazon-s3 docker-compose minio


【解决方案1】:

因此,MinIO Server 支持 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

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

您应该按照您首选 SDK 的文档来了解如何设置此值。值得注意的是 Sv2 是 deprecated - 较新的 SDK 版本甚至可能不支持它。因此,您首先需要确认您首选的 SDK 版本是否完全支持 Sv2,然后在连接到 MinIO 时启用它。例如,我没有在 AWS Java SDK 文档中找到一种明显的设置方法(尽管我可能只是错过了它)。

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

如果您有一个需要 Sv2 无法运行的特定应用程序,您需要提供更多详细信息,然后才能获得进一步的指导。从 MinIO 的角度来看,我不知道这两个签名版本有任何具体限制。

免责声明:我为 MinIO 工作。

【讨论】:

  • 我编辑问题是因为,您的回答是正确的,但没有回答我的问题。
  • 我不确定答案如何改变 Stephane,您的 lambda 代码需要针对 MinIO 而不是 S3。我不确定 AWS Lambda 是否允许您以任意 S3 兼容端点为目标,但如果确实如此,您需要将其指向您的 docker 托管的 MinIO(可能使用端口转发使其工作)。更有可能的是,您需要部署一个本地容器来运行您的 lambda 代码并指向 MinIO 而不是 S3。所有这些都是实现细节,而不是特定于 MinIO 的任何内容。听起来您希望 MinIO 在这里处理客户端行为。有点混乱。
  • 是的,我部署了一个本地容器,该容器正在运行我的 lambda 代码并指向 MinIO 而不是 S3。我在单元测试中这样做
  • 据我所知应该可以。您是否看到特定错误?你运行的是哪个版本的 MinIO?
  • 我用的是docker,所以是最后一个版本
猜你喜欢
  • 1970-01-01
  • 2023-02-18
  • 2019-10-30
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 2021-01-13
相关资源
最近更新 更多