Перейти к основному содержимому

Получить ссылку на объект

Последнее изменение:

Вы можете:

Мы не рекомендуем использовать кириллицу в именах объектов. Если вы используете кириллицу, для работы с ссылками на такие объекты кодируйте часть ссылки с кириллицей.

  1. В панели управления в верхнем меню нажмите Продукты и выберите S3.
  2. Перейдите в раздел Бакеты.
  3. Откройте страницу бакета → вкладка Объекты.
  4. В строке с объектом нажмите.
  5. В строке с ссылкой нажмите.

Вы можете:

Вы можете получить временную или постоянную ссылку на объект в приватном бакете.

Объект в приватном бакете будет доступен по ссылке вида https://<bucket_public_domain>/<object_name>, где:

Когда вы впервые создаете ссылку на объект в приватном бакете, в проекте автоматически создается публичный бакет links. Созданная ссылка добавляется в него в виде объекта с таким же именем, как у основного объекта. Объекты в бакете links имеют нулевой размер и не потребляют объем хранения. Если вы настроите ссылку как временную, объект со ссылкой автоматически удалится из бакета links, когда ссылка перестанет работать.

Чтобы создать ссылку:

  1. В панели управления в верхнем меню нажмите Продукты и выберите S3.

  2. Перейдите в раздел Бакеты.

  3. Откройте страницу бакета → вкладка Объекты.

  4. В менюобъекта выберите Открыть доступ.

  5. Опционально: в поле Адрес ссылки измените имя объекта, которое будет отображаться в ссылке, или оставьте текущее.

  6. Опционально: чтобы по ссылке можно было перейти только один раз, отметьте чекбокс Одноразовая ссылка.

  7. Опционально: чтобы ограничить время действия ссылки, отметьте чекбокс Временные ограничения и выберите один из вариантов:

    • Удалить через — ссылка перестанет работать через выбранный промежуток времени после создания;
    • Удалить в указанное время — ссылка перестанет работать в выбранную дату и время.
  8. Нажмите Создать ссылку.

  9. Чтобы скопировать ссылку, нажмите. Вы сможете скопировать ее позднее в бакете links.

С помощью подписанных URL (Presigned URLs) AWS SDK можно получить временную ссылку на объект. Подробнее в инструкции Sharing objects with presigned URLs документации AWS.

Пример скрипта:

import boto3

ACCESS_KEY = "<access_key>"
SECRET_KEY = "<secret_key>"
ENDPOINT_URL = "<s3_domain>"
BUCKET_NAME = "<bucket_name>"
OBJECT_KEY = "<path_to_object>"
EXPIRES_IN = "<time>"

s3 = boto3.client(
"s3",
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
endpoint_url=ENDPOINT_URL,
)

url = s3.generate_presigned_url(
ClientMethod="get_object",
Params={"Bucket": BUCKET_NAME, "Key": OBJECT_KEY},
ExpiresIn=EXPIRES_IN
)

print("\PresignedUrl
:")
print(url)

Укажите:

  • <access_key> — значение поля Access key из S3-ключа;
  • <secret_key> — значение поля Secret key из S3-ключа;
  • <s3_domain> — домен S3 API в зависимости от пула, в котором находится бакет;
  • <bucket_name> — имя бакета;
  • <path_to_object> — путь к объекту в бакете;
  • <time> — время действия ссылки в секундах.

Пример скрипта:

import boto3

def get_public_url(bucket_uuid: str, object_key: str) -> str:

return f"https://{bucket_uuid}.selstorage.ru/{object_key}"

if __name__ == "<python_file_name>":
bucket_uuid = "<uuid>"
object_key = "<path_to_object>"
url = get_public_url(bucket_uuid, object_key)
print("Public URL:", url)

Укажите:

  • <python_file_name> — имя файла;
  • <uuid> — уникальный идентификатор бакета, можно посмотреть в публичном домене бакета;
  • <path_to_object> — путь к объекту в бакете.