serverplus'da S3 obyekt xotirasi
Obyekt xotirasi — bu fayllarga disk kabi emas, HTTP orqali murojaat qilinadigan joy. Obyektlarni (fayllarni) «baket»larga (buckets) joylaysiz va har bir obyekt o'z kaliti bo'yicha ochiladi. serverplus'da u S3-mos, shuning uchun barcha odatiy vositalar bilan ishlaydi: aws-cli, rclone, boto3 va boshqa SDK'lar.
Qachon ishlatiladi
- Bekaplar va arxivlar — MB damplari, snapshotlar, loglar; serverlardan alohida saqlanadi.
- Media va foydalanuvchi yuklamalari — veb-ilova rasmlari, videolari, hujjatlari.
- Statika va fayl tarqatish — sayt assetlari, distributivlar, hisobotlar.
- Ma'lumot almashish xizmatlar o'rtasida va server diskida saqlash noqulay katta hajmlar uchun.
Agar ilova lokal diskka yozgandek fayl tizimi kerak bo'lsa — bu tom (Cinder), obyekt xotirasi emas. Obyekt xotirasi — «faylni kalit bo'yicha qo'ydim/oldim» haqida.
1. Endpoint, baket va kalitlar
Ulanish uchun yagona manzil (Amazon S3 bilan mos, standart S3 API'ni qo'llab-quvvatlaydi):
https://object-store.serverplus.uzBaket yaratish: cloud.serverplus.uz panelida «Obyekt xotirasi» bo'limini oching → «Baket yaratish», noyob nom va kirish turini bering — xususiy (xizmat ma'lumotlari uchun) yoki ommaviy. Yaratilgach baket S3 API orqali ochiladi.
Kalitlarni olish: «Kirish» → «S3/EC2 hisob ma'lumotlari» bo'limi → ACCESS_KEY + SECRET_KEY juftligini yarating. Ular API, CLI va ilovalar orqali ulanish uchun ishlatiladi.
S3 kalitlari — bu fayllaringizga kirish.
SECRET_KEY'ni ommaviy kodga joylamang, uni parol kabi saqlang, turli xizmatlar uchun alohida kalitlar yarating va keraksizlarini bekor qiling. Xizmat ma'lumotlari uchun xususiy baketlardan foydalaning.
2. aws-cli'ni sozlash
aws configure
# AWS Access Key ID: <access key>
# AWS Secret Access Key: <secret>
# Default region name: us-east-1
# Default output format: json
# path-style addressing for S3-compatible storage
aws configure set default.s3.addressing_style pathEndpoint manzilini takrorlamaslik uchun taxallus qulay:
alias s3='aws --endpoint-url https://object-store.serverplus.uz s3'3. Asosiy amallar
s3 mb s3://my-bucket # create a bucket
s3 cp report.pdf s3://my-bucket/ # upload a file
s3 sync ./site s3://my-bucket/site/ # sync a directory
s3 ls s3://my-bucket/ # list objects
s3 cp s3://my-bucket/report.pdf . # download
s3 rm s3://my-bucket/report.pdf # delete4. Koddan: Python (boto3)
import boto3
s3 = boto3.client(
"s3",
endpoint_url="https://object-store.serverplus.uz",
aws_access_key_id="<access key>",
aws_secret_access_key="<secret>",
region_name="us-east-1",
)
s3.upload_file("photo.jpg", "my-bucket", "images/photo.jpg")
for obj in s3.list_objects_v2(Bucket="my-bucket").get("Contents", []):
print(obj["Key"], obj["Size"])5. rclone: sinxronizatsiya va montaj
rclone muntazam sinxronizatsiya va hatto baketni papka sifatida montaj qilish uchun qulay. Konfig ~/.config/rclone/rclone.conf:
[sp]
type = s3
provider = Other
access_key_id = <access key>
secret_access_key = <secret>
endpoint = https://object-store.serverplus.uzrclone sync ./data sp:my-bucket/data # sync
rclone ls sp:my-bucket # list
rclone mount sp:my-bucket /mnt/s3 & # mount as a folder6. Versiyalash va hayotiy tsikl
Tasodifiy qayta yozishdan himoyalanish va eskini avtomatik tozalash uchun:
# enable bucket versioning
aws --endpoint-url https://object-store.serverplus.uz \
s3api put-bucket-versioning --bucket my-bucket \
--versioning-configuration Status=Enabled- Versiyalash obyektlarning oldingi versiyalarini saqlaydi — qayta yozish yoki o'chirishni orqaga qaytarish mumkin.
- Lifecycle qoidalari N kundan eski obyektlarni avtomatik o'chiradi yoki arxivlaydi — loglar va bekaplar uchun qulay.
7. Katta fayllar
Katta obyektlarni aws-cli va rclone qismlarga bo'lib (multipart) avtomatik yuklaydi — bu ishonchliroq: uzilishda faqat muvaffaqiyatsiz qism qayta yuklanadi. Odatda alohida sozlash kerak emas.
8. Ommaviy kirish va vaqtinchalik havolalar
Odatda obyektlar xususiy. Baketni tashqariga ochmasdan faylga kirish berish uchun presigned URL — vaqtinchalik imzolangan havoladan foydalaning:
s3 presign s3://my-bucket/report.pdf --expires-in 3600
# returns a link valid for 1 hourBaketni keraksiz o'rinda ommaviy qilmang. Ommaviy kirish sayt statikasi uchun o'rinli, xususiy fayllar uchun esa «hammaga ochish» emas, vaqtinchalik havolalardan foydalaning.
9. Odatiy stsenariylar
- Bekaplar: MB damplari va arxivlar jadval bo'yicha («Zaxira nusxalash strategiyasi» maqolasiga qarang).
- Ilova yuklamalari xotirasi: foydalanuvchi rasmlari va fayllari — server o'smaydi, fayllar havolalar orqali beriladi.
- Statika tarqatish: assetlar va distributivlar, kerak bo'lsa — CDN orqasida.
- Katta hajmlarni ko'chirish serverlar o'rtasida (to'g'ridan-to'g'ri nusxalashdan tez).
Xavfsizlik
- Alohida kalitlar va minimal huquqlar. Har bir ilovaga — o'z S3-kalitlari; keraksizlarini bekor qiling, vaqti-vaqti bilan yangilang.
- Sukut bo'yicha xususiylik. Ommaviy kirish — faqat ongli ravishda; vaqtinchalik kirish uchun — presigned URL.
- HTTPS va shifrlash. Faqat
https-endpoint orqali ishlang; maxfiy ma'lumotlarni yuklashdan oldin shifrlang. - Versiyalash — tasodifiy va qasddan o'chirishdan himoya.
Ko'p beriladigan savollar
SignatureDoesNotMatch xatosi. Odatda noto'g'ri secret, mijozda soat farqi yoki noto'g'ri endpoint/region. Kalitlar, vaqt va manzilni tekshiring.
Baketga murojaatda Access Denied. Yo kalitlar boshqa loyihadan, yo ularda shu baketga huquq yo'q. Qaysi kalit bilan murojaat qilayotganingizni va kirish siyosatini tekshiring.
Mijoz baketni topmayapti / g'alati adresatsiya xatolari. path-style'ni yoqing: aws configure set default.s3.addressing_style path (yoki SDK/rclone'dagi tegishli parametr).
serverplus endpoint manzili qanday? https://object-store.serverplus.uz — yagona S3-mos endpoint. Uni mijozga --endpoint-url sifatida (yoki SDK/rclone endpoint maydonida) berasiz.