كيفية تحميل الملفات إلى Amazon s3 باستخدام NodeJs و Lambda و API Gateway

يمكن أن يكون تحميل الملف الثنائي إلى دلو s3 باستخدام Amazon Lambda و API Gateway أمرًا صعبًا في بعض الأحيان وسأشارك معك كيف تمكنت من القيام بذلك.

لقد كان العمل مع Accounteer بمثابة نعمة بالنسبة لي من حيث مواجهة التحديات. لقد مكنني من استكشاف تقنيات جديدة وكيفية الاستفادة من الكثير من خدمات الويب من Amazon.

واجهت تحديًا لإنشاء نقطة نهاية تتيح لمستخدمي Accounteer تحميل الملفات إلى فواتيرهم وعروضهم ومشترياتهم الجديدة أو الحالية على التطبيق الرئيسي عبر واجهة برمجة التطبيقات.

لقد بدأت بحثي وتطرقت إلى وثائق أمازون ، وذكر أنه يمكن للمستخدمين تحميل ثنائيات مباشرة إلى s3 باستخدام Lambda ولكن من المدهش ، من الصعب القيام بذلك لأن عبور بوابة واجهة برمجة تطبيقات API يسمح لـ JSON بنوع المحتوى فقط.

دعني أبدأ بإظهار كيف فعلت ذلك. إذا كنت ترغب في اتباع خطواتي ، فيجب أن تكون مستخدمًا مسجلاً في أمازون ويجب أن تكون قد أنشأ دلوًا على s3.

بعد قيامك بإنشاء الدلو الخاص بك ، هناك بعض الخطوات الأخرى التي ستكون مطلوبة وسأعرض عليك.

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

سياسة الجرافة

{
 "Sid": "PublicReadGetObject" ،
 "التأثير": "السماح" ،
 "المالك": "*"،
 "العمل": "s3: GetObject" ،
 "المورد": "arn: aws: s3 ::: bucket-name / *"
 }

إذن دلو



  *
  PUT
  مشاركة
  GET
  الرأس
  3000
  التفويض

بعد تعيين التكوين أعلاه على دلو جديد أو موجود لديك ، فإن الشيء التالي هو إنشاء تطبيق Node الخاص بنا والذي يمكن Lambda استخدامه لمعالجة تحميل الملف.

إحدى أسهل الطرق التي استخدمتها لتحميل الملفات إلى S3 باستخدام Lambda هي تحويلها إلى سلسلة مشفرة base64 وتمريرها إلى المخزن المؤقت ثم إلى طريقة putObject s3 وهي بهذه البساطة.

تبعيات

  • أوس-SDK
  • لحظة
  • نوع الملف
  • SHA1
لامدا الفعلية التي تعالج تحميل الملفيمنحك هذا الرمز خصائص الملف ، مثل حجم الملف ونوع mimeType وما إلى ذلك

بعد إنشاء الرمز أعلاه ، ستحتاج إلى الرمز البريدي لاستخدامه لاحقًا.

الشيء التالي الذي يتعين علينا القيام به هو إنشاء وظيفة Lambda الخاصة بنا على Amazon ، وكذلك إنشاء نقطة نهاية تتوقع طلب POST إلى Lambda الذي أنشأناه.

اصنع لامدا واستورد الكود هنا

بعد استيراد الرمز الخاص بك ومنح Lambda اسمًا ذا معنى ، يمكنك المتابعة لإنشاء نقطة النهاية حيث يمكنك إرسال طلب POST وتحميل كائن الملف الخاص بك إلى s3.

تحتاج إلى تصفح خدمات الويب من أمازون والنقر فوق بوابة واجهة برمجة التطبيقات.

قم بإنشاء واجهة برمجة التطبيقات هنا ومنحها اسمًا ذا معنى

بعد إنشاء واجهة برمجة التطبيقات ، يمكنك المتابعة لإنشاء نقطة نهاية لتحميل الملف.

حدد منطقتك وأرفق وظيفة lambda

بعد تحديد منطقتك وتوصيل وظيفة lambda الخاصة بك ، ننتقل إلى تهيئة بوابة واجهة برمجة التطبيقات.

ما سبق يسمح لك بتعيين طلبك وردك

هم 4 أجزاء تكمل بوابة API ؛

طلب طريقة

يسمح لك "طلب الطريقة" باعتراض الطلب من المستخدم ، وهنا يمكنك تعيين "التخويل" وكذلك "المخول المخصص" الخاص بك في حالة رغبتك في استخدام JWT لترخيص الرمز المميز. يمكنك كذلك تعيين الرؤوس التي تريدها.

طلب التكامل

هذا حيث يحدث العبور الحقيقي للجسم. ستحتاج إلى تكوين قالب تعيين النص. سيمكّن هذا بوابة API من التعرف على طلبك إلى الحدث lambda.

قم بتعيين قالب تعيين جسدك هنا

استجابة الأسلوب

هذا هو المكان الذي تحتاج فيه إلى تعيين رمز حالة الرد الخاص بك ، على سبيل المثال

  • 404
  • 500
  • 200 - الافتراضي
  • 401
اضبط رموز حالتك هنا

طلب التكامل

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

قم بالرد على رمز 404 وقم بتكوين قالب التعيين لتنسيق رسالة الخطأ

بعد الانتهاء من الخطوات المذكورة أعلاه ، تتمثل الخطوة التالية في نشر واجهة برمجة التطبيقات واستخدام POSTMAN لاستهلاك نقطة النهاية

قم بإصدار API الخاص بك هناطلب وظيفة عينة لوظيفة lambda

يمكنك استخدام الساعة السحابية لمراقبة الاستجابة في حالة وجود خطأ وإلا يجب عليك استعادة عنوان URL للملف

{"file_url": "bucketpath + fullfilepath"}

شكرا جزيلا لك على الذهاب من خلال البرنامج التعليمي. لا تتردد في إسقاط التعليقات وخطأ.