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

S3视频转HLS时Lambda获取含特殊字符文件名路径异常求助

解决S3文件名含特殊字符时Lambda获取的Key编码问题

问题根源

S3触发Lambda事件时,会对对象Key做URL编码:空格被转为+,括号等特殊字符也会被编码。直接用编码后的Key拼接S3 URI时,MediaConvert无法匹配实际存储的未编码对象路径,导致文件找不到。

解决方案

用Python的urllib.parse.unquote_plus()方法对编码后的Key解码,还原原始文件名格式。

修改后的Lambda代码

import os
import uuid
from urllib.parse import unquote_plus

def handler(event, context):
    assetID = str(uuid.uuid4())
    sourceS3Bucket = event['Records'][0]['s3']['bucket']['name']
    # 解码URL编码后的Key
    sourceS3Key = unquote_plus(event['Records'][0]['s3']['object']['key'])
    sourceS3 = f's3://{sourceS3Bucket}/{sourceS3Key}'
    sourceS3Basename = os.path.splitext(os.path.basename(sourceS3))[0]
    # 后续处理逻辑...

关键说明

  • unquote_plus()会将+还原为空格,同时解码其他URL编码的特殊字符(比如括号会恢复为原始符号)
  • 解码后的Key拼接成的S3 URI与实际对象路径完全一致,MediaConvert就能正常读取文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:40:56