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

拥有IAM用户名、密码、账户ID,如何通过AWS CLI/BOTO3下载S3存储桶文件夹?

IAM用户名密码场景下AWS CLI/Boto3批量下载S3文件配置方法

IAM用户名+密码仅用于AWS网页控制台的身份校验,无法直接用于AWS CLI、Boto3等API/SDK工具的身份验证,这类工具仅支持访问密钥(Access Key ID/Secret Access Key)、临时安全凭证等API类凭证。你可以通过控制台为你的IAM用户生成访问密钥,再配置到工具中实现批量下载。

方案1:自行创建访问密钥(当前IAM用户有权限时)

步骤1:控制台生成访问密钥

  • 登录AWS网页控制台,点击右上角用户名,下拉选择「安全凭证」
  • 下滑到「访问密钥」板块,点击「创建访问密钥」
  • 用途选择「命令行界面(CLI)」,勾选下方的确认提示,依次点击下一步完成创建
  • 生成后立即复制保存Access Key ID和Secret Access Key,或下载CSV凭证文件,关闭页面后Secret Access Key将无法再次查看

步骤2:AWS CLI配置与批量下载

  • 本地安装AWS CLI后,终端执行aws configure
  • 按照提示依次输入生成的Access Key ID、Secret Access Key、S3桶对应的默认区域(如us-east-1)、默认输出格式(可填json)
  • 配置完成后执行以下命令即可批量下载指定文件夹下的所有文件:
    aws s3 cp s3://<替换为你的桶名>/<替换为桶内文件夹路径> ./<替换为本地保存路径> --recursive

步骤3:Boto3配置与批量下载

完成上述aws configure全局配置后,Boto3会自动读取凭证,无需在代码中硬编码凭证,示例代码如下:

import boto3
import os

s3_client = boto3.client('s3')
# 替换为实际参数
BUCKET_NAME = "你的S3桶名"
S3_FOLDER_PREFIX = "桶内目标文件夹路径/" # 末尾加/避免匹配到同名前缀的其他文件
LOCAL_SAVE_PATH = "./本地保存目录"

os.makedirs(LOCAL_SAVE_PATH, exist_ok=True)
paginator = s3_client.get_paginator('list_objects_v2')

# 分页遍历所有文件,避免单页请求上限问题
for page in paginator.paginate(Bucket=BUCKET_NAME, Prefix=S3_FOLDER_PREFIX):
    if "Contents" not in page:
        break
    for obj in page["Contents"]:
        # 跳过文件夹占位对象
        if obj["Key"].endswith("/"):
            continue
        # 生成本地文件相对路径,保留桶内目录结构
        relative_path = os.path.relpath(obj["Key"], S3_FOLDER_PREFIX)
        local_file = os.path.join(LOCAL_SAVE_PATH, relative_path)
        os.makedirs(os.path.dirname(local_file), exist_ok=True)
        s3_client.download_file(BUCKET_NAME, obj["Key"], local_file)

方案2:无访问密钥创建权限时

如果你的IAM用户没有创建访问密钥的权限,请联系AWS账户管理员,申请为你的IAM用户分配访问密钥,或添加iam:CreateAccessKey权限后自行生成凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:36:00