You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Curl在Minio中创建Bucket(避免使用mc命令)

如何通过Curl在Minio中创建Bucket(避免使用mc命令)

嗨,我之前也碰到过一模一样的问题,刚好能给你捋清楚怎么解决!你用普通的curl PUT请求失败,是因为新版Minio默认要求使用AWS Signature Version 4(也就是报错里的AWS4-HMAC-SHA256)来做身份验证,而你用的-u参数是Basic Auth方式,已经不被Minio默认支持了。下面给你两种不用mc命令的解决办法:

方案一:临时开启Basic Auth兼容(仅测试/非生产环境用)

如果你只是在测试环境折腾,不想搞复杂的签名,那可以修改Minio的配置,让它同时支持旧版的v2签名和新版的v4签名。因为你的Minio跑在kind集群里,需要调整一下Minio Deployment的配置:

  • 找到你的Minio Deployment对象,修改容器的启动参数或者添加环境变量:
    • 环境变量方式:给Minio容器添加MINIO_API_SIGNATURES=s3v4,s3v2
    • 启动参数方式:在Minio的启动命令末尾加上--api s3v4,s3v2
  • 重启Minio的Pod之后,你原来的curl命令就能正常工作了:
    curl -X PUT -u "minioroot:miniopassword" "http://localhost:9000/ci-bucket"
    
  • 注意:这个方法绝对不要在生产环境用,因为v2签名的安全性比v4低很多。

方案二:用curl原生支持的AWS SigV4签名(推荐,生产可用)

其实新版的curl(7.75.0及以上版本)已经自带了AWS SigV4签名的支持,完全不用额外工具。步骤很简单:

  1. 先检查你的curl版本,确保是7.75.0以上:
    curl --version
    
  2. 然后直接用带签名的curl命令创建Bucket,注意Bucket名称后面要加/(这是S3规范要求的,Minio会以此识别是创建Bucket的请求):
    curl -X PUT "http://localhost:9000/ci-bucket/" \
      --aws-sigv4 "aws4_request" \
      --user "minioroot:miniopassword" \
      --header "Host: localhost:9000"
    
  3. 如果你是在kind集群外面访问,记得先把Minio的端口转发到本地,比如:
    kubectl port-forward service/minio 9000:9000
    
    然后再执行上面的创建Bucket命令就行。

执行成功后,你可以用下面的命令验证Bucket是否创建成功:

curl -X GET "http://localhost:9000/" \
  --aws-sigv4 "aws4_request" \
  --user "minioroot:miniopassword"

这个命令会列出所有已存在的Bucket,你应该能看到ci-bucket在里面。

备注:内容来源于stack exchange,提问作者guettli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 11:30:31