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

使用wget从S3存储桶下载文件夹遇403禁止访问问题求助

解决S3存储桶wget递归下载文件夹报403的问题

问题原因

wget递归下载时,首先会尝试列出目标文件夹下的所有文件,这个操作需要s3:ListBucket权限,但你当前的存储桶策略只配置了s3:GetObject权限,所以触发403禁止错误。而单个文件下载不需要列表操作,只需要GetObject,所以可以正常完成。

解决方案

1. 补充存储桶策略的ListBucket权限

修改你的存储桶策略,添加s3:ListBucket权限,同时限定到目标文件夹的前缀,避免开放整个桶的列表权限。示例策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::your-bucket-name",
                "arn:aws:s3:::your-bucket-name/your-folder-path/*"
            ],
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "your-allowed-ip/32"
                }
            }
        }
    ]
}

注意:

  • 把your-bucket-name替换为你的存储桶名称
  • your-folder-path替换为目标文件夹的路径(比如docs/reports/)
  • your-allowed-ip替换为你授权的特定IP

2. (可选)不开放ListBucket权限的替代方法

如果你不想添加ListBucket权限,可以直接指定文件夹下的所有文件路径给wget,比如:

wget https://your-bucket-name.s3.amazonaws.com/your-folder-path/file1.txt
wget https://your-bucket-name.s3.amazonaws.com/your-folder-path/file2.jpg
# 或者用通配符(需要确保shell支持,且你预先知道文件名)
wget https://your-bucket-name.s3.amazonaws.com/your-folder-path/*

但这种方法需要你提前知道所有文件名,实用性较低,更推荐第一种策略调整的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:13:15