Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() التطوير المجاني مع AWS S3 و Paperclip - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2016-09-30
تطوير البرمجيات

تطوير غير مبرر مع AWS S3 و Paperclip

بارتوش زوركوفسكي

في السنوات القليلة الماضية، أصبح التخزين عبر الإنترنت سائداً في السنوات القليلة الماضية، حيث يوفر هياكل قابلة للتطوير بدرجة عالية من حيث البنية والأمان المحسّن وإمكانية الوصول إلى البيانات على نطاق واسع. واحدة من أكثر خدمات التخزين شيوعًا هي خدمة التخزين البسيط من Amazons، المعروفة باسم S3.

أمازون S3 هي خدمة قوية للغاية في قلب خدمات أمازون ويب سيرفيسز. ومع ذلك، خارج بيئة الإنتاج، قد يكون من الصعب العمل مع S3 خارج بيئة الإنتاج. فهي تنطوي على تمرير مفاتيح الوصول، وتوفير حسابات المستخدمين، والحفاظ على اتصال شبكة موثوق به - ناهيك عن أنها تكلف أموالاً. FakeS3 هو خادم خفيف الوزن يحاكي سلوك S3 الحقيقي. فهو يستجيب للمكالمات نفسها التي يستجيب لها Amazon S3 ويخزن الملفات التي تم تحميلها في نظام الملفات المحلي الخاص بك - لا توجد طلبات إلى خدمة أمازون. على الرغم من أن الجوهرة لا تدعم المجموعة الكاملة لأوامر S3، إلا أن واجهة برمجة التطبيقات المنفذة كافية لمعظم حالات استخدام التطبيقات.

في هذه المقالة سأعرض في هذه المقالة نهج دمج AWS و FakeS3 مع Paperclip - مكتبة مرفقات الملفات الشائعة للسجل النشط. يوفر كل من Paperclip و S3 معًا نظامًا فعالًا لتخزين الملفات يجمع بين ميزات Paperclip الأساسية المفيدة (مثل إدارة عمليات التحقق من الصحة وتحويلات الصور) مع مزايا التخزين عبر الإنترنت. على الرغم من أن تكوين هذه الأدوات ليس واضحًا ويتطلب البحث في الوثائق التفصيلية بالإضافة إلى حل العديد من المشكلات الخاصة بالأحجار الكريمة، إلا أن الأمر يستحق قضاء بعض الوقت في جعل التطوير أسرع وأكثر كفاءة.

ما هو هدفنا؟

يتطلب دمج الأدوات الموصوفة ثلاث خطوات:

  1. تشغيل خادم S3 المزيف المقدم من جوهرة FakeS3 المزيفة في الخلفية.
  2. تكوين عميل AWS S3 لتفويض جميع الطلبات إلى خادم مزيف تم إطلاقه.
  3. تهيئة مشبك الورق لاستخدام نقطة نهاية S3 وهمية في عناوين URL المورد المبنية.

التركيب

لنبدأ بتثبيت الجواهر المطلوبة:

# Gemfile

جوهرة "مشبك الورق"
جوهرة "aws-sdk", "~> 1.6"

الجوهرة "fakes3"، المجموعة: [:تطوير، :اختبار]

تأكد من تثبيت الإصدار 1.6 من aws-sdk. لا يعمل مشبك الورق الذي يستخدم SKD لإدارة التخزين في خدمة Amazon بشكل جيد مع الإصدارات الأعلى من هذه الجوهرة. ويرجع ذلك إلى التغييرات الكبيرة التي طرأت على واجهة برمجة التطبيقات SDK التي تم جلبها مع الإصدار 2.0.

تذكر أيضًا أن الهدف الرئيسي من FakeS3 هو تقليل تبعيات وقت التشغيل. إنها أكثر من أداة تطوير لاختبار استدعاءات S3 في الكود بدلاً من خادم إنتاج يتطلع إلى تكرار وظيفة S3. لذلك يجب عليك تضمين الجوهرة في مجموعة التطوير والاختبار فقط.

تكوين AWS

توفر AWS SDK طريقة مساعدة مخصصة مسؤولة عن تحميل التكوين. سيقوم افتراضيًا بتحميل التكوين من config/aws.ymlواستخراج معلمات البيئة الحالية وتمريرها إلى عميل AWS. أولاً، قم باستدعاء الطريقة التالية في المُهيئ:

# config/initializers/aws.rb

AWS:::Rails.load_yaml_config

والآن، بعد أن أصبح لدينا ملف تهيئة يتم تحميله بشكل صحيح، يمكننا المتابعة في تحديد محتواه:

# config/aws.yml

التطوير: &التطوير
    Access_key_ID: "abc"
    مفتاح_الوصول_السري: "abc": "abc"
    نقطة النهاية s3: "المضيف المحلي"
    s3_port: 10001
    s3_فورس_باث_ستايل: صحيح
    استخدام_ssl: خطأ

اختبار: *تطوير

دعونا نناقش جميع المعلمات واحدة تلو الأخرى:

  • مفتاح_مفتاح_الوصول_المعرف، مفتاح_الوصول_السري - بيانات اعتماد عميل AWS المطلوبة للوصول إلى حساب Amazon الخاص بك. يتم تجاهلها من قبل خادم S3 المزيف وبالتالي القيم المخصصة في بيئات وضع الحماية.
  • نقطة النهاية s3_endpoint, s3_port- مواصفات نقطة نهاية S3. نحن نستخدم هذه المعلمات لاستبدال نقطة نهاية S3 الحقيقية بنقطة نهاية مزيفة يتم إطلاقها بواسطة جوهرة FakeS3 المزيفة - سيتم الآن تفويض جميع الطلبات إلى خدمة أمازون إلى خادم مزيف محلي.
  • s3_فرض_المسار_المسار_ستايل - يقبل S3 نمطين لتضمين اسم الدلو في عنوان URL. يمكنك اختيار وضع اسم الجرافة على نمط المجال (bucket.s3.amazonaws.com) أو نمط المسار (s3.amazonaws.com/bucket). من أجل إبقاء الأمور بسيطة وتجنب التكوين الإضافي المرتبط بتعيين المجال الفرعي للجرافة إلى عنوان الاسترجاع، أفضل نمط المسار على نمط المجال في بيئة التطوير.
  • استخدام_ssl - يفرض على AWS SDK استخدام HTTPS بدلاً من HTTP الفانيليا. نحن بحاجة إلى تعطيل هذا الخيار، لأن FakeS3 gem لا يدعم طلبات HTTPS التي ينفذها عميل AWS افتراضيًا.

التهيئة لبيئة الإنتاج واضحة ومباشرة جداً:

# config/aws.yml

الإنتاج: &إنتاج
    access_key_keyid:     
    مفتاح_الوصول_السري: 

التدريج: *الإنتاج

ولكن هذه المرة، نحن نتعامل مع خدمة S3 حقيقية، لذلك تحتاج إلى تقديم بيانات اعتماد AWS الأصلية.

نظرًا للمخاطر الأمنية المحتملة، من الممارسات الجيدة الاحتفاظ بالقيم السرية مثل مفاتيح الوصول خارج نظام التحكم في الإصدار الخاص بك، على سبيل المثال باستخدام متغيرات البيئة. سنستخدم ERB لحقن قيمها في ملف التكوين.

تكوين مشبك الورق

حان الوقت الآن لمواجهة Paperclip وإجباره على العمل بشكل جيد مع عميل S3 الذي تم تكوينه بالفعل. الهدف الرئيسي من تكوين مشبك الورق هو الحصول على مسار التخزين الذي سيحدد موقع الموارد التي يستضيفها الخادم المزيف:

المضيف المحلي:10001/:اسم_الدلو/:المسار

مرة أخرى، لنبدأ ببيئة التطوير:

# config/paperclip.yml

التطوير: &التطوير
    التخزين: :s3
    دلو: "التطوير"
    s3_اسم المضيف: "المضيف المحلي"
    عنوان url: ":s3_alias_url"
    المسار: ":class/:class/:attachment/:id_partition/:style/:fileename.:extension"
    s3_المضيف_الاسم المستعار: ":localhost:10001/development"

اختبار: *تطوير
  • التخزين - مواصفات ناقل التخزين (افتراضيًا نظام الملفات المحلي). نظرًا لأننا نستخدم AWS S3 نحتاج إلى تغييره إلى :s3.
  • الدلو - اسم دلو S3 الذي سيخزن ملفاتك. إذا لم يكن الدلو موجودًا سيحاول Paperclip إنشاءه.
  • الرابط - مضبوطًا على :s3_alias_url سيؤدي إلى قيام Paperclip بتسمية اسم مضيف دلو S3 بالاسم المستعار لدلو S3 بالقيمة المحددة بواسطة :s3_المضيف_الاسم المستعار المعلمة.
  • s3_المضيف_الاسم المستعار - الاسم المستعار لمضيف دلو S3 الافتراضي. لاحظ أن موضع اسم المضيف والمنفذ واسم الدلو يتوافق مع تكوين عميل AWS.
  • المسار - نمط للمفاتيح التي سيتم تخزين الملفات تحتها في الدلو. يجب أن تكون المفاتيح فريدة داخل الدلو، مثل أسماء الملفات. نظرًا لأن S3 لا يدعم الدلائل، يمكنك استخدام / لمحاكاة هياكل الدليل.
# config/paperclip.yml

الإنتاج: &production
    التخزين: :s3
    دلو:  
    URL:     ":s3_domain_url"
    المسار:    ":class/:class/:مرفق/:id_partition/:style/:fileename.:extension"

التدريج: *الإنتاج

على غرار بيانات اعتماد AWS، يعتبر اسم الدلو أيضًا قيمة سرية يجب تخزينها خارج قاعدة التعليمات البرمجية الخاصة بك. أوصي بتخزين اسمه في متغير البيئة.

أخيرًا، ادمج التكوين في خيارات Paperclip الافتراضية في أداة تهيئة:

# config/initializers/paperclip.rb

paperclip_defaults = Rails.application.config_for :paperclip
paperclip_defaults.symbolize_keys!

مشبك الورق::مرفق.default_options.merge! paperclip_defaults

تشغيل التزييف3

يحتوي كل من تكوينات AWS و Paperclip على مرجع إلى خادم S3 المزيف المحلي المتوقع تشغيله تحت المضيف المحلي:10001. قبل العمل في التطوير، يجب عليك تشغيل الخادم باستخدام الأمر التالي (الذي توفره جوهرة FakeS3 gem):

تزييف 3 -r public/system -p 10001

المعلمات التي تم تمريرها هي:

  • الجذر -r - الدليل الجذر الذي سيتم تخزين الملفات التي تم تحميلها تحته. ضع في اعتبارك استبعاده من VCS إذا كنت لا تريد أن يتم تخزين الملفات التي تم تحميلها في مستودعك.
  • المنفذ -P - رقم المنفذ الذي سيتم تشغيل الخادم المحلي عليه.

إذا كنت تستخدم فورمان لإدارة العمليات في تطبيقك، فقد يكون من المناسب إضافة الإدخال التالي إلى Procfile:

# Procfile

fakes3: fakes3 -r ${FAKES3_STORAGE_PATH:-public/system} -p Continuous Integration/Continuous Deployment (CI/CD)P62T{FAKES3_PORT:-10001}

سيوفر لك ذلك الوقت الضائع في تشغيل الخادم المزيف في كل مرة ستحتاج فيها إلى تطوير بعض الميزات المتعلقة بـ S3.

الخاتمة

لقد قمنا بتهيئة عميل AWS لتفويض جميع الطلبات إلى خادم مزيف محلي، وقمنا بإعداد Paperclip لاستخدام نقطة نهاية S3 المزيفة في عناوين URL الخاصة بالمورد المُنشأة وأطلقنا الخادم المزيف الذي توفره جوهرة S3 المزيفة لتخزين جميع الملفات في نظام الملفات المحلي.

ونتيجة لذلك، أصبحنا مستقلين عن الاتصال بالإنترنت ووفرنا المال مما جعل تطويرنا أسرع وأكثر موثوقية.

مقالات ذات صلة

تطوير البرمجيات

إنشاء تطبيقات ويب مستقبلية: رؤى من فريق خبراء The Codest

اكتشف كيف تتفوق شركة The Codest في إنشاء تطبيقات ويب تفاعلية قابلة للتطوير باستخدام أحدث التقنيات، وتقديم تجارب مستخدم سلسة عبر جميع المنصات. اكتشف كيف تقود خبرتنا التحول الرقمي والأعمال التجارية...

ذا كوديست
تطوير البرمجيات

أفضل 10 شركات لتطوير البرمجيات في لاتفيا

تعرّف على أفضل شركات تطوير البرمجيات في لاتفيا وحلولها المبتكرة في أحدث مقالاتنا. اكتشف كيف يمكن لهذه الشركات الرائدة في مجال التكنولوجيا المساعدة في الارتقاء بأعمالك.

thecodest
الحلول المؤسسية وحلول التوسعة

أساسيات تطوير برمجيات جافا: دليل للاستعانة بمصادر خارجية بنجاح

استكشف هذا الدليل الأساسي حول تطوير برمجيات جافا outsourcing بنجاح لتعزيز الكفاءة والوصول إلى الخبرة وتحقيق نجاح المشروع باستخدام The Codest.

thecodest
تطوير البرمجيات

الدليل الشامل للاستعانة بمصادر خارجية في بولندا

إن الطفرة في outsourcing في بولندا مدفوعة بالتقدم الاقتصادي والتعليمي والتكنولوجي، مما يعزز نمو تكنولوجيا المعلومات والمناخ الملائم للأعمال.

ذا كوديست
الحلول المؤسسية وحلول التوسعة

الدليل الكامل لأدوات وتقنيات تدقيق تكنولوجيا المعلومات

تضمن عمليات تدقيق تكنولوجيا المعلومات وجود أنظمة آمنة وفعالة ومتوافقة. تعرف على المزيد حول أهميتها من خلال قراءة المقال كاملاً.

The Codest
ياكوب جاكوب جاكوبوفيتش CTO وشريك مؤسس CTO

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic