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

如何使用AWS CLI按MIME类型上传文件至S3存储桶

使用AWS CLI按指定MIME类型上传文件到S3存储桶

方法一:通过后缀筛选快速上传(依赖AWS CLI自动识别MIME)

如果你的系统默认MIME类型映射和mime.json一致,可直接用AWS CLI的--include/--exclude参数筛选目标后缀文件,操作如下:

步骤1:生成筛选参数

先从mime.json提取所有后缀,生成--include参数列表(需安装jq工具解析JSON):

INCLUDE_ARGS=$(jq -r 'keys[]' mime.json | sed 's/^/--include "*"/')

步骤2:执行上传命令

先排除所有文件,再通过生成的--include参数包含目标后缀文件:

aws s3 cp build/ s3://frontend-bucket --recursive --exclude "*" $INCLUDE_ARGS

注意:AWS CLI会自动根据文件后缀识别并设置Content-Type,若你的mime.json包含自定义MIME映射,此方法不适用。


方法二:严格匹配自定义MIME映射上传(和Terraform逻辑一致)

若需要完全遵循mime.json的映射设置Content-Type,可结合文件遍历命令逐个处理文件:

Linux/macOS(Bash脚本)

#!/bin/bash
BUILD_DIR="build"
BUCKET="s3://frontend-bucket"
MIME_JSON="mime.json"

# 遍历build目录下的所有文件
find "$BUILD_DIR" -type f | while read -r FILE; do
    # 获取文件后缀(如.css)
    EXT=$(echo "$FILE" | sed -E 's/^.*(\.[^.]+)$/\1/')
    # 从mime.json读取对应Content-Type
    CONTENT_TYPE=$(jq -r --arg ext "$EXT" '.[$ext]' "$MIME_JSON")
    
    # 仅上传有对应MIME类型的文件
    if [ "$CONTENT_TYPE" != "null" ]; then
        # 计算S3对象键:移除build目录前缀
        OBJECT_KEY=$(echo "$FILE" | sed "s/^$BUILD_DIR\///")
        aws s3 cp "$FILE" "$BUCKET/$OBJECT_KEY" --content-type "$CONTENT_TYPE"
    fi
done

Windows(PowerShell脚本)

$buildFolder = "build"
$bucket = "s3://frontend-bucket"
$mimeFile = "mime.json"

# 将mime.json转为哈希表
$mimeMap = Get-Content $mimeFile | ConvertFrom-Json

# 遍历所有文件
Get-ChildItem $buildFolder -Recurse -File | ForEach-Object {
    $extension = $_.Extension
    # 检查后缀是否在自定义MIME映射中
    if ($mimeMap.PSObject.Properties.Name -contains $extension) {
        $contentType = $mimeMap.$extension
        # 生成S3对象键
        $objectKey = $_.FullName.Substring($buildFolder.Length + 1)
        aws s3 cp $_.FullName "$bucket/$objectKey" --content-type $contentType
    }
}

注意事项

  1. 确保已安装jq工具(Linux/macOS用包管理器,Windows可通过Chocolatey安装)
  2. AWS CLI需配置好S3上传权限
  3. 脚本中的路径和桶名请根据实际情况修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:20:59