最新消息:因从typecho切换到wordpress, 由于转换导入问题,文章可能存在部分乱码或者排版问题,逐个排查修复中...

[AWS] Lambda S3 Event 空格被换成+号的小坑

工作相关 admin 1331浏览 0评论

使用Lambda的过程中,需要在有文件上传到S3时,自动读取文件内容进行后续处理。

但是间歇性的遇到一些奇怪的问题,比如报NoSuchKey的问题。

很容易将问题原因导向到 Read after Write的 ConsistentRead 的方向。

解释一下,就是当文件上传后马上可以读取的功能。

然而加上延时并没有什么用。

仔细DIG才会发现,原来还是文件名编码的问题。上传的文件名中如果包括空格,则在S3 的Event里面会自动将空格替换为+号

也就是你明明 上传的 test 123.txt (中间有个空间)

但在Lamdba读取S3 event 时:

event['Records'][0]['s3']['object']['key']

返回给你的是 test+123.txt

你再用client去getObject的话,于是就报NoSuchKey了

既然如此,我们就故意也上传一个 test+123.txt 给它如何?

结果你会发现返回给你的是 test%2B123.txt + 号已经被URL编码了。

知道问题所在,解决起来就方便多了。

我想聪明的你应该懂了吧。已经写得这么明白了。就是涉及URL编码和解码的问题。

转载请注明:Linc Hu » [AWS] Lambda S3 Event 空格被换成+号的小坑

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址