aws предварительно спроектированные URL и flask - PullRequest
0 голосов
/ 06 апреля 2020

Я работал над веб-страницей, которая позволяет пользователям загружать изображения в мое 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>

что мне делать ???

спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...