Получить ссылку на объект
Вы можете:
- получить ссылку на объект в публичном бакете — все объекты доступны через публичные домены хранилища;
- получить ссылку на объект в приватном бакете — ссылку можно сделать постоянной или временной.
Мы не рекомендуем использовать кириллицу в именах объектов. Если вы используете кириллицу, для работы с ссылками на такие объекты кодируйте часть ссылки с кириллицей.
Получить ссылку на объект в публичном бакете
- В панели управления в верхнем меню нажмите Продукты и выберите S3.
- Перейдите в раздел Бакеты.
- Откройте страницу бакета → вкладка Объекты.
- В строке с объектом нажмите .
- В строке с ссылкой нажмите .
Получить ссылку на объект в приватном бакете
Вы можете:
- создать постоянную или временную ссылку в панели управления. Ссылка будет сохранена в специальном бакете
linksв виде объекта с таким же именем, как у объекта, на который указывает ссылка. Доступ к объекту будет через публичный домен бакетаlinks; - получить временную ссылку через подписанный URL;
- получить постоянную ссылку через скрипт;
- получить постоянную или временную ссылку через инструменты, например Rclone, AWS CLI, Cyberduck и S3 Browser.
Создать ссылку в панели управления
Вы можете получить временную или постоянную ссылку на объект в приватном бакете.
Объект в приватном бакете будет доступен по ссылке вида https://<bucket_public_domain>/<object_name>, где:
<bucket_public_domain>— публичный домен бакета;<object_name>— имя объекта.
Когда вы впервые создаете ссылку на объект в приватном бакете, в проекте автоматически создается публичный бакет links.
Созданная ссылка добавляется в него в виде объекта с таким же именем, как у основного объекта.
Объекты в бакете links имеют нулевой размер и не потребляют объем хранения.
Если вы настроите ссылку как временную, объект со ссылкой автоматически удалится из бакета links, когда ссылка перестанет работать.
Чтобы создать ссылку:
-
В панели управления в верхнем меню нажмите Продукты и выберите S3.
-
Перейдите в раздел Бакеты.
-
Откройте страницу бакета → вкладка Объекты.
-
В меню объекта выберите Открыть доступ.
-
Опционально: в поле Адрес ссылки измените имя объекта, которое будет отображаться в ссылке, или оставьте текущее.
-
Опционально: чтобы по ссылке можно было перейти только один раз, отметьте чекбокс Одноразовая ссылка.
-
Опционально: чтобы ограничить время действия ссылки, отметьте чекбокс Временные ограничения и выберите один из вариантов:
- Удалить через — ссылка перестанет работать через выбранный промежуток времени после создания;
- Удалить в указанное время — ссылка перестанет работать в выбранную дату и время.
-
Нажмите Создать ссылку.
-
Чтобы скопировать ссылку, нажмите . Вы сможете скопировать ее позднее в бакете
links.
Получить временную ссылку через подписанный URL
С помощью подписанных URL (Presigned URLs) AWS SDK можно получить временную ссылку на объект. Подробнее в инструкции Sharing objects with presigned URLs документации AWS.
Python
PHP
JavaScript
Java
Go
Пример скрипта:
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>— время действия ссылки в секундах.
Получить постоянную ссылку через скрипт
Python
PHP
JavaScript
Java
Go
Пример скрипта:
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>— путь к объекту в бакете.