Skip to main content

Get a link to an object

You can:

We do not recommend using Cyrillic in object names. If you do use Cyrillic, encode the Cyrillic part of the link when working with links to such objects.

  1. In the control panel, on the top menu, click Products and select S3.
  2. Go to Buckets.
  3. Open the bucket page → Objects tab.
  4. In the object row, click .
  5. In the link row, click .

You can:

You can get a temporary or permanent link to an object in a private bucket.

An object in a private bucket will be available via a link like https://<bucket_public_domain>/<object_name>, where:

When you create a link to an object in a private bucket for the first time, a public bucket named links is automatically created in the project. The created link is added to it as an object with the same name as the main object. Objects in the links bucket have zero size and do not consume storage volume. If you configure the link as temporary, the object with the link will be automatically deleted from the links bucket once the link stops working.

To create a link:

  1. In the control panel, on the top menu, click Products and select S3.

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

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

  4. In the object menu, select Make public.

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

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

  7. Optional: to limit the link duration, select the Time limits checkbox and choose one of the options:

    • Delete after — the link will stop working after the selected time interval after creation;
    • Delete at a specified time — the link will stop working at the selected date and time.
  8. Click Create link.

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

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

Script example:

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)

Specify:

  • <access_key> — the value of the Access key field from the S3 key;
  • <secret_key> — the value of the Secret key field from the S3 key;
  • <s3_domain> — the S3 API domain depending on the pool where the bucket is located;
  • <bucket_name> — the bucket name;
  • <path_to_object> — the path to the object in the bucket;
  • <time> — the link duration in seconds.

Script example:

import boto3

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

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

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

Specify:

  • <file_name> — the Python file name;
  • <uuid> — the unique bucket identifier, can be viewed in the bucket public domain;
  • <path_to_object> — the path to the object in the bucket.