Поле key
в событии уведомления AWS S3, которое обозначает имя файла, является URL-адресом экранированным.
Это видно, когда имя файла содержит пробелы или символы, отличные от ASCII.
Например, я загрузил следующее имя файла на S3:
my file řěąλλυ.txt
Уведомление принимается как:
{
"Records": [
"s3": {
"object": {
"key": u"my+file+%C5%99%C4%9B%C4%85%CE%BB%CE%BB%CF%85.txt"
}
}
]
}
Я попытался декодировать, используя:
key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf-8')
но это дает:
my file ÅÄÄλλÏ.txt
Конечно, когда я пытаюсь получить файл из S3 с помощью Boto, я получаю ошибку 404.