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

如何使用AWS CLI获取含表情符号的S3存储桶文件对象URL?

解决AWS S3私有桶对象URL批量生成及编码问题

一、用AWS CLI批量生成符合要求的URL

AWS CLI本身没有直接输出对象URL的命令,但可以结合工具快速生成,且编码完全匹配S3控制台的规则:

方案1:AWS CLI + jq(推荐)

通过s3api获取对象Key,用jq的URL编码过滤器直接构造URL:

aws s3api list-objects-v2 --bucket mybucket --query 'Contents[].Key' | jq -r '.[] | @uri | "https://mybucket.s3.amazonaws.com/\(.)"'
  • aws s3api list-objects-v2:获取桶内所有对象的Key列表
  • jq的@uri:自动按S3要求编码特殊字符、表情和Unicode字符,和控制台生成的URL完全一致

方案2:纯AWS CLI + Python(无需额外工具)

如果服务器没装jq,可以用Python的标准库处理编码:

aws s3api list-objects-v2 --bucket mybucket --query 'Contents[].Key' --output text | xargs -I {} python3 -c "import urllib.parse; print(f'https://mybucket.s3.amazonaws.com/{urllib.parse.quote_plus(\"{}\")}')"

这里quote_plus会把空格编码为+,正好匹配示例中的格式。

二、S3的URL编码规则(手动构造参考)

如果需要自己实现编码逻辑,遵循以下规则:

  • ASCII保留字符(!、*、(、)、')直接保留,无需编码
  • 空格编码为+(不是普通URL的%20)
  • 其他ASCII特殊字符(#、$、&等)转成百分号编码(比如%23)
  • Unicode字符/表情:先转成UTF-8字节流,再对每个字节做百分号编码(比如🔥会变成%F0%9F%94%A5)

三、输出JSON格式结果

如果需要生成JSON数组格式的URL列表,调整命令即可:

aws s3api list-objects-v2 --bucket mybucket --query 'Contents[].Key' | jq -r '[.[] | @uri | "https://mybucket.s3.amazonaws.com/\(.)"]'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:15:11