我已在我的存储桶上配置了事件,只要存储桶中有新对象,它就会触发消息为SQS。我的桶中的钥匙看起来像
'/model/invalid/SourceSystem/20160101/Monthly/SourceSystem/year=2018/month=01/day=02/test.csv'
在阅读来自sqs的消息时,我得到了响应
'/model/invalid/SourceSystem/20160101/Monthly/SourceSystem/year%3D2018/month%3D01/day%3D02/test.csv
截至目前,我正在使用python代码将%3D
替换为=
,但它似乎不是一个正确的解决方案
fileLocation = fileLocation.replace('%3D', '=')
答案 0 :(得分:1)
这是预期的documented:
s3键提供有关事件中涉及的存储桶和对象的信息。 请注意,对象键名值是URL编码的 。例如,
"red flower.jpg"
变为"red+flower.jpg"
。
对于解码URL编码密钥,您可以使用urllib.unquote_plus:
将
%xx
转义符替换为单字符等效值。 (_plus
后缀表示它还会将+
解码为- s̳p̳a̳c̳e̳字符)
Python 2.x :
from urllib import unquote_plus as urldecode
# ...
fileLocation = urldecode(fileLocation)
Python 3.x :
from urllib.parse import unquote_plus as urldecode
# ...
fileLocation = urldecode(fileLocation)
答案 1 :(得分:0)
也可以这种方式完成
import urllib.parse
fileLocation ='/ model / invalid/SourceSystem/20160101/Monthly/SourceSystem/year%3D2018/month%3D01/day%3D02/test.csv'
fileLocation = urllib.parse.unquote(fileLocation)