Генерировать предварительно подписанный url sse-c s3
Как сгенерировать presigned url для получения URL-адреса объекта при использовании SSE-C в python?
Когда я загружаю файл, вот как выглядит мой код
secret = '?D(G+KbPeSgVkYp3s6v9y$B&E)H@McQf' # just pasting here. In general, it's usually derived from .env file
return client.put_object(
Bucket=os.environ.get('S3_DOCS_BUCKET'),
Key='koushik.jpg', # giving a random name for .jpg image file
Body=file,
ContentType=fileobject.content_type,
SSECustomerAlgorithm='AES256',
SSECustomerKey=secret,
)
Теперь, это загружается нормально. Но проблема в том, что я не могу создать URL с предварительной подписью, как это
url = client.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': os.environ.get('S3_DOCS_BUCKET'),
'Key': 'koushik.jpg',
'SSECustomerAlgorithm': 'AES256',
'SSECustomerKey': '?D(G+KbPeSgVkYp3s6v9y$B&E)H@McQf', # just pasting here
},
ExpiresIn=3600,
)
Генерируемый ключ говорит, что подпись не совпадает.
Сейчас поискал, в некоторых местах написано, что нужно предоставить и параметры SSECustomerKeyMD5.
Я попробовал сделать это, но все равно не работает.
url = client.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': os.environ.get('S3_DOCS_BUCKET'),
'Key': 'koushik.jpg',
'SSECustomerAlgorithm': 'AES256',
'SSECustomerKey': '?D(G+KbPeSgVkYp3s6v9y$B&E)H@McQf', # just pasting here,
'SSECustomerKeyMD5': hashlib.md5('?D(G+KbPeSgVkYp3s6v9y$B&E)H@McQf'.encode('utf-8')).hexdigest()
},
ExpiresIn=3600,
)
Я потратил несколько дней, но так и не смог найти рабочее решение.
Если кто-нибудь может, пожалуйста, покажите рабочий пример file upload(a.k.a put_object), предоставив SSECustomerKeyMD5. Я думаю, это мне очень поможет. Заранее спасибо.