Я работал над веб-страницей, которая позволяет пользователям загружать изображения в мое aws s3 ведро. И это также позволяет пользователям просматривать все изображения, загруженные в ведро.
Я пытался сделайте это с flask.
часть загрузки работала нормально, но отображение изображений из корзины не работает. Во время загрузки изображения я сохраняю имя файла в базе данных, чтобы у него был список Доступные изображения. Я попытался создать предварительно разработанный URL, используя следующий код:
@core.route('/gallery')
def gallery():
urls=[]
images = Cse_Gallery.query.all()
for i in images:
url = s3.generate_presigned_url(ClientMethod='get_object',
Params={
'Bucket': bucket_name,
'Key': 'Images/{}'.format(i.name),
},
ExpiresIn=3600)
urls.append(url)
return render_template('gallery.html', images=urls)
и код html приведен ниже:
<div class="site-section">
<div class="container">
<div class="row">
{%for image in images%}
<div class="col-md-4">
<a href="{{image}}" class="img-hover" data-fancybox="gallery">
<span class="icon icon-search"></span>
<img src='{{image}}' alt="Image placeholder" class="img-fluid">
</a>
</div>
{%endfor%}
</div>
</div>
когда я пытаюсь запустить его на localhost, он работает абсолютно нормально, но я попытался разместить его на heroku, и отображение изображений не отображается. А также я попытался проверить сгенерированные URL-адреса, и они выглядят следующим образом:
https://cse-static-a.s3.amazonaws.com/developers/me1.png?AWSAccessKeyId=xxxxx&Signature=xxx&Expires=1586244320
https://cse-static-a.s3.amazonaws.com/developers/d.jpg?AWSAccessKeyId=xxxx&Signature=xxx&Expires=1586
, и когда я получаю к ним доступ в браузере, я получаю следующее:
<Error>
<Code>InvalidRequest</Code>
<Message>
The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.
</Message>
<RequestId>617ECA49B2610B97</RequestId>
<HostId>
xxxxxxx
</HostId>
</Error>
что мне делать ???
спасибо