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

如何使用AWS CLI生成S3预签名URL并通过Bash脚本自动化?

编写Bash脚本自动生成AWS S3预签名下载URL

前提条件

  • 已安装AWS CLI,且通过aws configure完成凭证配置(或通过环境变量、IAM角色等方式提供权限)
  • 拥有目标S3文件的读取权限

脚本示例

#!/bin/bash

# 配置参数 - 替换成你的实际信息
BUCKET_NAME="your-bucket-name"
FILE_PATH="documents/report.pdf"  # S3桶内的文件相对路径,不要带s3://前缀
EXPIRY_SECONDS=3600  # URL有效时长,单位秒,最大支持604800(7天)

# 生成预签名URL
PRESIGNED_URL=$(aws s3 presign "s3://${BUCKET_NAME}/${FILE_PATH}" --expires-in ${EXPIRY_SECONDS})

# 校验生成结果
if [ $? -eq 0 ]; then
    echo "成功生成预签名下载URL:"
    echo "${PRESIGNED_URL}"
    # 可选:自动复制到剪贴板(macOS用pbcopy,Linux需安装xclip后用xclip -selection clipboard)
    # echo "${PRESIGNED_URL}" | pbcopy
    # echo "URL已复制到剪贴板"
else
    echo "生成失败,请检查:"
    echo "1. AWS CLI配置是否正确"
    echo "2. 桶名和文件路径是否存在"
    echo "3. 当前凭证是否有该文件的读取权限"
    exit 1
fi

使用步骤

  1. 将上述代码保存为generate_s3_presign.sh
  2. 赋予执行权限:chmod +x generate_s3_presign.sh
  3. 替换脚本中的BUCKET_NAME和FILE_PATH为实际值
  4. 运行脚本:./generate_s3_presign.sh

扩展技巧

  • 批量生成:如果需要处理多个文件,可以把文件路径存入一个列表,循环生成:
    FILES=(
        "docs/file1.txt"
        "images/photo.jpg"
    )
    for FILE in "${FILES[@]}"; do
        PRESIGNED_URL=$(aws s3 presign "s3://${BUCKET_NAME}/${FILE}" --expires-in ${EXPIRY_SECONDS})
        echo "${FILE}: ${PRESIGNED_URL}"
    done
    
  • 自定义过期时间:可以通过命令行参数传入过期时间,比如修改脚本开头:
    EXPIRY_SECONDS=${1:-3600}  # 默认1小时,若传入参数则用参数值
    
    运行时:./generate_s3_presign.sh 7200(设置2小时有效期)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:03:12