Используя библиотеку Amazon s3 boto, как я могу получить URL-адрес сохраненного ключа?

Я сохраняю ключ в ведро с помощью:

key = bucket.new_key(fileName) key.set_contents_from_string(base64.b64decode(data)) key.set_metadata('Content-Type', 'image/jpeg') key.set_acl('public-read') 

После успешного сохранения, как я могу получить доступ к URL-адресу вновь созданного файла?

3 Solutions collect form web for “Используя библиотеку Amazon s3 boto, как я могу получить URL-адрес сохраненного ключа?”

Если ключ является общедоступным (как показано выше), вы можете использовать Key.generate_url :

 url = key.generate_url(expires_in=0, query_auth=False) 

Если ключ является приватным, и вы хотите создать URL-адрес истечения срока действия, чтобы разделить контент с тем, у кого нет прямого доступа, вы можете сделать:

 url = key.generate_url(expires_in=300) 

где expires – количество секунд до истечения срока действия URL-адреса. Они будут создавать HTTPS-url. Если вы предпочитаете URL-адрес HTTP, используйте это:

 url = key.generate_url(expires_in=0, query_auth=False, force_http=True) 

Для Boto3 вам нужно сделать это следующим образом …

 import boto3 s3 = boto3.client('s3') url = '{}/{}/{}'.format(s3.meta.endpoint_url, bucket, key) 
 import boto from boto.s3.connection import S3Connection conn = S3Connection('AWS_ACCESS_KEY', 'AWS_SECRET_KEY') secure_https_url = 'https://{host}/{bucket}/{key}'.format( host=conn.server_name(), bucket='name-of-bucket', key='name_of_key') http_url = 'http://{bucket}.{host}/{key}'.format( host=conn.server_name(), bucket='name-of-bucket', key='name_of_key') 

Вот как я сделал это в boto 2.23.0 для общедоступного URL. Я не мог заставить аргумент expires_in = None работать.

Обратите внимание, что для HTTPS вы не можете использовать субдомен.

  • get_bucket () дает «плохой запрос» для кодов S3, которые я не создал через Boto
  • Как я могу программно проверять разрешения Amazon S3 с помощью boto?
  • Django не будет обслуживать статические файлы от Amazon S3 с пользовательским доменом
  • Boto - AWS SNS, как извлечь номер ARN для темы
  • Как запустить экземпляр EC2 с Boto, указав размер EBS?
  • Как закрыть соединение Boto S3?
  • Boto Ec2 и эластичные IP-адреса
  • Загрузите файл с помощью boto
  •  
    Interesting Posts for Van-Lav

    Использование функции roll_apply с функцией, которая требует 2 аргумента в Pandas

    Pandas, отображающий тайм-ауты, с вертикальными линиями в выбранные даты

    Как заставить py2app запускать приложение в 32-битном режиме

    Правильный способ иметь уникальный идентификатор в Python?

    Как бы вы наследовали и переопределяли классы модели django для создания listOfStringsField?

    Как удалить линии сетки с участка Bokeh?

    Python анализирует int из строки

    Как перебирать список, повторяющий каждый элемент в Python

    Как написать полную оболочку Python вокруг C Struct с помощью Cython?

    Python проверяет, являются ли элементы списка номерами

    Django IntegerField с параметрами выбора (как создать 0-10 целых параметров)

    cx_Oracle: Как я могу получить каждую строку в качестве словаря?

    Когда мне нужно использовать sqlalchemy back_populates?

    sys_platform не определен x64 Windows

    Cython / Python / C ++ – Наследование: передача производного класса в качестве аргумента функции, ожидающего базовый класс

    Python - лучший язык программирования в мире.