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

使用boto3+MinIO上传S3对象遇AccessDenied错误排查求助

问题:MinIO中使用Service Account通过boto3上传S3对象时出现AccessDenied错误

问题背景

使用boto3通过自定义的具备读写权限的service account,向作为S3兼容存储的MinIO上传对象。已确认存储桶和前缀路径正确,使用管理员凭证可正常完成操作,但切换到该service account凭证时触发权限错误。

已配置的IAM策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        }
    ]
}

报错信息

boto3.exceptions.S3UploadFailedError: Failed to upload /tmp/tmpfnkhwptw/model/requirements.txt to ml-artifacts/1/02e5b8a81a834b6e83a3412745f4ff6a/artifacts/sklearn-model/requirements.txt: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied.

原因分析

  1. MinIO与AWS的ARN匹配逻辑差异:MinIO对S3 ARN的解析规则和AWS原生不同,arn:aws:s3:::*这种宽泛的匹配规则无法正确覆盖桶内对象的权限,需要明确指定桶和对象层级的ARN。
  2. Bucket Policy的优先级限制:若目标MinIO桶配置了Bucket Policy,其拒绝规则会优先于IAM策略生效,可能限制了service account的写入权限。
  3. 策略绑定未生效:service account可能未正确关联到配置的IAM策略,或是MinIO的策略缓存未刷新,导致权限未同步。
  4. 路径大小写不匹配:MinIO默认大小写敏感,若代码中指定的存储桶或对象路径与实际存在的路径大小写不一致,也会触发权限类报错。

解决方法

  • 修正IAM策略的Resource格式:明确指定目标桶及桶内对象的ARN,以ml-artifacts桶为例:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:*"
                ],
                "Resource": [
                    "arn:aws:s3:::ml-artifacts",
                    "arn:aws:s3:::ml-artifacts/*"
                ]
            }
        ]
    }
    
    该配置同时授权桶级操作和桶内所有对象的操作。
  • 检查并调整Bucket Policy:登录MinIO控制台,查看ml-artifacts桶的Bucket Policy,确保不存在拒绝该service account执行PutObject操作的规则,必要时添加允许权限的规则。
  • 重新绑定IAM策略:使用MinIO命令行工具重新关联策略与service account,确保权限生效:
    mc admin policy attach <minio-别名> --user <service-account名称> <策略名称>
    
  • 核对路径大小写:确认代码中指定的存储桶名称ml-artifacts及对象路径的大小写,与MinIO中实际存在的完全一致。

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:25:16