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

Directus集成AWS S3存储适配器遇写入权限错误求助

排查Directus + AWS S3写入权限问题的思路

我之前也碰到过类似的S3存储权限问题,结合你的配置和场景,给你几个具体的排查方向:

1. 确认IAM用户的权限是否完整

虽然AWS CLI能正常操作,但要注意Directus上传文件时,除了基础的s3:PutObject,还需要对应你配置里的ACL: public-read权限——也就是s3:PutObjectAcl。另外,可能还需要s3:ListBucket来验证桶的存在。

你可以检查下IAM用户的策略是否包含这些权限,示例策略片段如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::your-bucket-name/*",
                "arn:aws:s3:::your-bucket-name"
            ]
        }
    ]
}

2. 检查S3桶的Block Public Access设置

如果你的桶开启了Block all public access或者Block public access to buckets and objects granted through any access control lists (ACLs),那你配置里的ACL: public-read就会被拒绝。可以暂时关闭这个设置,或者移除Directus配置中的ACL选项,测试是否能正常上传。

3. 验证Directus配置中的路径与端点

  • 确认root字段的/originals前缀是否符合S3的路径规则(S3没有真正的文件夹,前缀不需要提前创建,但要确保没有特殊字符)。
  • 如果使用的是AWS中国区、GovCloud或者第三方S3兼容存储,需要在options中添加正确的endpoint配置,比如:
    'options' => [
        'ACL' => 'public-read',
        'CacheControl' => 'max-age=604800',
        'endpoint' => 'https://s3.cn-north-1.amazonaws.com.cn'
    ],
    
  • 检查root_url中的##S3_URL##是否正确,比如应该是https://your-bucket-name.s3.your-region.amazonaws.com这种格式。

4. 查看Directus的详细日志

开启Directus的调试模式(在配置中设置'debug' => true),查看应用日志或者服务器的错误日志,通常会有更具体的错误信息——比如是签名过期、端点不匹配,还是确实被IAM策略拒绝。

5. 测试简化版配置

暂时去掉所有非必要的配置项,比如先移除options里的ACL和CacheControl,只用基础的S3配置上传文件,确认是否能成功。如果可以,再逐步加回配置项排查是哪一项导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 06:57:49