Skip to main content

Get a link to an object

You can:

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

  1. In the control panel, on the top menu, click Products and select S3.
  2. Go to the Buckets section.
  3. Open the bucket page → Objects tab.
  4. In the object line, click .
  5. In the link line, 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 set up the link as temporary, the object with the link will be automatically removed from the links bucket when the link expires.

To create a link:

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

  2. Go to the Buckets section.

  3. Open the bucket page → Objects tab.

  4. In the object menu, select Open Access.

  5. Optional: in the Link address field, change the object name that will be displayed in the link, or leave it as is.

  6. Optional: to ensure the link can only be used once, select the One-time link checkbox.

  7. Optional: to restrict the link lifetime, select the Time restrictions checkbox and choose one of the following:

    • Delete after — the link will expire after the specified period of time after creation;
    • Delete at a specific time — the link will expire at the selected date and time.
  8. Click Create link.

  9. To copy the link, click . You will be able to copy it later in the links.

Use AWS SDK presigned URLs (Presigned URLs) to obtain a temporary link to an object. For more information, see the Sharing objects with presigned URLs article in the AWS documentation.

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 lifetime 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.