בעת שילוב Yandex Object Storage עם 1C-Bitrix, מפתחים נתקלים לעיתים קרובות בבעיות לא מובנות מאליהן: חוסר התאמה של חתימת SigV4, חסימת CORS להעלאת קבצים מהדפדפן, וקאשינג שגוי של CDN. חנות Bitrix טיפוסית מאחסנת בין 10 ל-50 GB של תמונות מוצר ב-/upload/. מעבר לאחסון ענן S3 מפחית את עומס השרת ב-40% ומאיץ את טעינת דפי הקטלוג פי 2–3. אנו מגדירים אחסון ענן במפתח מלא: מיצירת חשבון שירות ועד חיבור CDN. הניסיון שלנו כולל למעלה מ-50 פרויקטים עבור חנויות מקוונות ופורטלים ארגוניים. אנו פותרים בעיות אלו תוך 2–3 ימים, עם אחריות לתאימות לכל רכיבי Bitrix. עלות אחסון 1 GB ב-Yandex Object Storage מתחילה מ-$1–1 לחודש, וזה זול פי כמה ממערך דיסקים ייעודי. חיסכון כולל: עד $18–26 לחודש על אחסון ותעבורה עבור חנות טיפוסית.
פרמטרי חיבור
נקודת קצה של Yandex Object Storage: https://storage.yandexcloud.net. אזור: ru-central1. פורמט כתובת ציבורית: https://[bucket].storage.yandexcloud.net/[key] — סגנון וירטואלי מתארח.
ב-/bitrix/admin/main_cloud_storage.php ציינו:
- סוג אחסון: Amazon S3 (תואם)
- נקודת קצה:
https://storage.yandexcloud.net - אזור:
ru-central1 - מפתח גישה: מזהה מפתח סטטי מקונסולת Yandex Cloud
- מפתח סודי: מפתח סודי
- Bucket: שם ה-bucket
יצירת חשבון שירות ומפתחות: בקונסולת Yandex Cloud: IAM → Service Accounts → Create → הקצאת תפקיד storage.editor על ה-bucket → יצירת מפתח גישה סטטי.
הגדרת אחסון תואם S3
המודול main.cloudstorages משתמש ב-AWS SDK PHP. בעת חיבור ל-Yandex Object Storage, ה-SDK עשוי כברירת מחדל להשתמש בגרסת חתימה שגויה. Yandex תומך רק ב-Signature Version 4 (SigV4), בעוד שה-SDK עבור נקודות קצה מותאמות אישית לפעמים מנסה להשתמש ב-SigV2. ללא ציון מפורש של החתימה, האימות נכשל. הפתרון הוא הוספת הפרמטר 'signature' => 'v4' לתצורת הלקוח:
$s3Client = new \Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'ru-central1', 'endpoint' => 'https://storage.yandexcloud.net', 'signature' => 'v4', 'credentials' => [ 'key' => $accessKey, 'secret' => $secretKey, ], ]); אם ממשק המודול אינו מאפשר העברת פרמטר זה, אנו עורכים את מחלקת הספק (עם גיבוי) או משתמשים בירושה. גישה זו נבדקה על עשרות פרויקטים.
כיצד לתקן שגיאות חתימת SigV4?
התיעוד הרשמי של 1C-Bitrix אינו מספק פתרון מוכן. בפועל, תיקון ל-$s3Client = new \Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'ru-central1', 'endpoint' => 'https://storage.yandexcloud.net', 'signature' => 'v4', 'credentials' => [ 'key' => $accessKey, 'secret' => $secretKey, ], ]); עוזר: הוסיפו /bitrix/modules/main/lib/cloudstorages/amazon.php בקונסטרוקטור הלקוח. לחלופין, דרוסו את המתודה 'signature' => 'v4' במחלקה יורשת. מקור: תיעוד Yandex Object Storage — SigV4 הוא חובה.
הגדרת CORS להעלאות
בעת שימוש בכתובות presigned להעלאה ישירה ל-Object Storage, דפדפנים חוסמים בקשות ללא כותרות CORS. בקונסולת Yandex Cloud, בסעיף "CORS", הוסיפו כלל. בצעו את השלבים הבאים:
- נווטו להגדרות ה-bucket בקונסולת Yandex Cloud.
- פתחו את הכרטיסייה "CORS".
- הוסיפו כלל חדש:
<CORSConfiguration> <CORSRule> <AllowedOrigin>https://example.com</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedHeader>*</AllowedHeader> <MaxAgeSeconds>3600</MaxAgeSeconds> </CORSRule> </CORSConfiguration> - שמרו את התצורה.
ללא הגדרה זו, TinyMCE וטפסי העלאה מותאמים אישית יזרקו שגיאה. אנו כוללים הגדרת CORS בהיקף העבודה הסטנדרטי.
מדיניות מחזור חיים לקבצים זמניים
Yandex Object Storage תומך במחיקה אוטומטית של קבצים ישנים מ-N ימים. זה שימושי עבור תיקיות getS3Client() ו-<CORSConfiguration> <CORSRule> <AllowedOrigin>https://example.com</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedHeader>*</AllowedHeader> <MaxAgeSeconds>3600</MaxAgeSeconds> </CORSRule> </CORSConfiguration> , ש-Bitrix אינו מנקה. דוגמה לכלל:
דוגמה למדיניות מחזור חיים ב-JSON
{ "Rules": [{ "ID": "cleanup-tmp", "Status": "Enabled", "Filter": { "Prefix": "upload/tmp/" }, "Expiration": { "Days": 7 } }] } מוגדר דרך הקונסולה או API. חיסכון בשטח עד 30% לחודש בחנות טיפוסית. עבור חנות עם 20 GB של קבצים זמניים, זה חוסך כ-$5–8 לחודש באחסון בענן.
כיצד להגדיר CDN?
Yandex Cloud CDN משתלב עם Object Storage תוך דקות: צרו משאב CDN עם ה-bucket כמקור, ציינו את דומיין ה-CDN באפשרות /upload/tmp/. לאחר מכן, Bitrix יוצר כתובות ציבוריות דרך ה-CDN, וקבצים נשלחים מנקודת הנוכחות הקרובה. פרמטר בקוד:
\Bitrix\Main\Config\Option::set('main', 'cloud_storage_cdn_url', 'https://cdn.example.com'); כתיבות הולכות ישירות ל-bucket, קריאות עוברות דרך ה-CDN. עבור שינוי גודל תמונות, זה נותן האצה פי 2–3 בטעינת דפי קטלוג. עבור פרויקטים רוסיים, Yandex CDN מציע את זמן ההשהיה הטוב ביותר בהשוואה ל-CloudFront — העיכובים נמוכים ב-30% הודות למרכזי נתונים במוסקבה ובסנקט פטרבורג.
מה כלול בהתקנה במפתח מלא
אנו מבצעים את המחזור המלא: יצירת חשבון שירות, הגדרת CORS, תיקון חתימה, מדיניות מחזור חיים, שילוב CDN. אנו מספקים תיעוד תצורה וגיבוי של קבצים מקוריים. אנו מבטיחים שלמות נתונים ותאימות לאחר עדכוני Bitrix.
| פרמטר | Yandex Object Storage | AWS S3 |
|---|---|---|
| נקודת קצה | storage.yandexcloud.net | s3.amazonaws.com |
| אזור | ru-central1 (יחיד) | us-east-1 ואחרים |
| חתימה | SigV4 בלבד | SigV2/V4 |
| CORS | נדרש לדפדפן | דומה |
| CDN | Yandex Cloud CDN | CloudFront |
| מדד | ללא CDN | עם CDN |
|---|---|---|
| זמן טעינת תמונה (500 KB) | ~1.2 שניות | ~0.4 שניות |
| עומס שרת | 100% | עד 20% |







