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

无法创建关联AWS的Databricks工作区:存储配置验证失败

创建关联AWS的Databricks工作区时存储配置验证失败

创建关联AWS的Databricks工作区时,最后一步失败,报错信息如下:

MALFORMED_REQUEST: Failed storage configuration validation checks: List,Put,PutWithBucketOwnerFullControl,Delete

Databricks存储配置验证失败报错截图

已在S3策略、Databricks角色权限及信任关系中配置了所需权限,但仍出现该错误。

S3策略

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::account-number:role/databricks-access"
        },
        "Action": [
            "s3:ListBucket",
            "s3:GetBucketLocation"
        ],
        "Resource": "arn:aws:s3:::learning-databricks"
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::account-number:role/databricks-access"
        },
        "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:DeleteObject"
        ],
        "Resource": "arn:aws:s3:::learning-databricks/*"
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::account-number:role/databricks-access"
        },
        "Action": "s3:PutObjectAcl",
        "Resource": "arn:aws:s3:::learning-databricks/*",
        "Condition": {
            "StringEquals": {
                "s3:x-amz-acl": "bucket-owner-full-control"
            }
        }
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::414351767826:root"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::learning-databricks",
            "arn:aws:s3:::learning-databricks/*"
        ],
        "Condition": {
            "StringEquals": {
                "s3:x-amz-acl": "bucket-owner-full-control"
            }
        }
    }
]
}

Databricks角色权限

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeInstances",
            "ec2:DescribeInstanceStatus",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVolumes",
            "ec2:DescribeVpcs",
            "ec2:CreateInternetGateway",
            "ec2:CreateVPC",
            "ec2:DeleteVPC",
            "ec2:AllocateAddress",
            "ec2:ReleaseAddress",
            "ec2:DescribeNatGateways",
            "ec2:DeleteNatGateway",
            "ec2:DeleteVpcEndpoints",
            "ec2:CreateRouteTable",
            "ec2:DisassociateRouteTable",
            "ec2:CreateSecurityGroup",
            "ec2:AuthorizeSecurityGroupIngress",
            "ec2:AuthorizeSecurityGroupEgress",
            "ec2:CreateSubnet",
            "ec2:DeleteSubnet",
            "ec2:CreateNetworkInterface",
            "ec2:DeleteNetworkInterface",
            "ec2:AttachNetworkInterface",
            "ec2:DetachNetworkInterface",
            "ec2:ModifyNetworkInterfaceAttribute",
            "iam:PassRole",
            "ec2:RunInstances",
            "ec2:StopInstances",
            "ec2:TerminateInstances",
            "ec2:StartInstances"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:*"
        ],
        "Resource": [
            "arn:aws:s3:::learning-databricks",
            "arn:aws:s3:::learning-databricks/*"
        ],
        "Condition": {
            "StringEquals": {
                "s3:x-amz-acl": "bucket-owner-full-control"
            }
        }
    }
]
}

Databricks角色信任关系

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::414351767826:root"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": {
                "sts:ExternalId": "External-uuid"
            }
        }
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::aws-account:root"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": {
                "sts:ExternalId": "External-uuid"
            }
        }
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::aws-account:role/databricks-access"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": {
                "sts:ExternalId": "External-uuid"
            }
        }
    }
]
}

问题排查与解决方案

1. 移除S3权限的条件限制

当前Databricks角色的S3权限被强制要求携带s3:x-amz-acl=bucket-owner-full-control条件,但Databricks在验证存储配置时不会自动添加该ACL头,导致权限校验失败。

修改Databricks角色的S3权限语句,删除条件限制:

{
    "Effect": "Allow",
    "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::learning-databricks"
},
{
    "Effect": "Allow",
    "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject",
        "s3:PutObjectAcl"
    ],
    "Resource": "arn:aws:s3:::learning-databricks/*"
}

同时,S3桶策略中给databricks-access角色的权限也无需额外条件,保持基础权限即可。

2. 修正信任关系中的账户ID

信任关系里的aws-account占位符必须替换为你的实际AWS账户ID,确保Databricks服务能正确承担该角色。

3. 检查S3桶的访问设置

  • 确认S3桶归当前AWS账户所有,无跨账户所有权冲突;
  • 检查桶的公共访问设置,确保没有阻止内部角色的访问(无需开启公共访问,只需避免强制的访问阻止规则)。

4. 手动验证权限

用AWS CLI模拟Databricks角色执行操作,确认权限生效:

# 承担databricks-access角色
aws sts assume-role --role-arn arn:aws:iam::你的账户ID:role/databricks-access --role-session-name test-databricks

# 使用返回的临时凭证配置CLI后,执行测试
aws s3 ls s3://learning-databricks
aws s3 cp test.txt s3://learning-databricks/test.txt
aws s3 rm s3://learning-databricks/test.txt

如果测试失败,根据报错信息进一步定位权限问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:50:56