Presigned URL — kalitlarni bermasdan yopiq obyektga kirish imkonini beradigan vaqtinchalik havola. Uning yordamida mijozga faylni yuklab olish yoki brauzerga faylni bevosita bucketga yuklash imkonini berish mumkin.
Misollarda UzCloud uchun sozlangan AWS CLI ishlatiladi. my-bucket ni oʻz bucketingiz nomiga almashtiring.
Eslatma
Presigned URL muddati tugaguncha unga ega boʻlgan har kim uchun ishlaydi. Maksimal muddat — 7 kun (604 800 soniya). Agar havola imzolangan kirish kalitini bekor qilsangiz, havola ishlashdan toʻxtaydi.
Yuklab olish uchun havola
aws s3 presign s3://my-bucket/docs/report.pdf --expires-in 3600
Buyruq bir soat amal qiladigan havolani chiqaradi. Bunday havolalarni grafik mijozlar ham yarata oladi: Cyberduck’da Share, S3 Browser’da Generate Web URL.
Yuklash uchun havola
AWS CLI faqat yuklab olish havolalarini yaratadi. Yuklash havolalari SDK orqali yaratiladi, masalan Python’da:
import boto3
from botocore.config import Config
s3 = boto3.client(
"s3",
endpoint_url="https://s3.uzcstorage.uz",
region_name="default",
config=Config(signature_version="s3v4", s3={"addressing_style": "path"}),
)
url = s3.generate_presigned_url(
"put_object",
Params={"Bucket": "my-bucket", "Key": "uploads/photo.jpg", "ContentType": "image/jpeg"},
ExpiresIn=600,
)
print(url)
Faylni havola orqali yuklang (Content-Type imzolashda koʻrsatilgan bilan mos kelishi kerak):
curl -X PUT -H "Content-Type: image/jpeg" --upload-file photo.jpg "<presigned URL>"
Brauzerdan yuklash uchun bucket uchun CORS ni ham sozlang. Boshqa tillar uchun misollar: JavaScript, PHP, Go.