Доступ к файлам в приватном бакете объектного хранилища Selectel
Пытаюсь получить временную ссылку с помощью метода generate_presigned_url в библиотеке boto3, чтобы затем передать ее на клиент и пользователь мог просматривать файл из приватного бакета. Столкнулся с тем, что создать ссылку получается, но при запросе к ней выдает 403 код, хотя как читал в документации, метод generate_presigned_url нужен для того, чтобы выдавать доступ к файлам неавторизованным пользователям объектного хранилища.
Ссылку проверяю просто скопировав ее и вставив в браузер. Может я что-то не настроил или не дал каких-то прав? Хотя в политике доступа к контейнеру пробовал как убирать все права доступа, так и для всех пользователь выдавал их все.
Код:
class S3Client:
def __init__(self, access_key: str, secret_key: str, endpoint_url: str, bucket_name: str):
self.bucket_name = bucket_name
self.s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url
)
def generate_temp_url(self, path: str):
try:
url = self.s3_client.generate_presigned_url(ClientMethod='get_object',
Params={'Bucket': self.bucket_name,
'Key': '123.jpg'},
ExpiresIn=3600)
print("URL", url)
return url
except ClientError as e:
print(f"Ошибка при генерации ссылки для {path}: {e}")
return urls