אחסון אובייקטים עבור 1C-Bitrix: SigV4, CORS, CDN

בעת שילוב Yandex Object Storage עם 1C-Bitrix, מפתחים נתקלים לעתים קרובות בבעיות לא מובנות מאליהן: אי-תאימות חתימת SigV4, חסימת CORS להעלאות קבצים מהדפדפן, וקיזוז CDN שגוי. חנות Bitrix טיפוסית מאחסנת בין 10 ל-50 ג'יגה-בייט של תמונות מוצר בתיקיית `/upload/`. העברת
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
אחסון אובייקטים עבור 1C-Bitrix: SigV4, CORS, CDN
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1460
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1019
  • פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    764
  • פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    809
  • פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1165

בעת שילוב 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", הוסיפו כלל. בצעו את השלבים הבאים:

  1. נווטו להגדרות ה-bucket בקונסולת Yandex Cloud.
  2. פתחו את הכרטיסייה "CORS".
  3. הוסיפו כלל חדש:
<CORSConfiguration> <CORSRule> <AllowedOrigin>https://example.com</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedHeader>*</AllowedHeader> <MaxAgeSeconds>3600</MaxAgeSeconds> </CORSRule> </CORSConfiguration> 
  1. שמרו את התצורה.

ללא הגדרה זו, 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%