بناء تطبيقات لا خادمية متطورة باستخدام AWS Chalice: دليل شامل

دقائق القراءة: 6

مقدمة إلى AWS Chalice: تبسيط بناء التطبيقات اللاخادمية

في عالم الحوسبة السحابية المتسارع، أصبحت التطبيقات اللاخادمية (Serverless Applications) حجر الزاوية في بناء حلول مرنة وقابلة للتوسع وفعالة من حيث التكلفة. مؤخرًا، لفت انتباهي إطار عمل AWS Chalice، وقد أُعجبت حقًا بالبساطة وسهولة الاستخدام التي يقدمها. يمثل AWS Chalice إطار عمل لا خادميًا يتيح لك بناء تطبيقات لا خادمية باستخدام لغة Python، ونشرها بسهولة على سحابة AWS بالاستفادة من خدمات مثل Amazon API Gateway و AWS Lambda.

قررت استكشاف إمكانياته، وتمكنت بالفعل من إنشاء ونشر واجهة برمجة تطبيقات (REST API) نموذجية على AWS في غضون دقائق معدودة. في هذا المقال، سأرشدك خطوة بخطوة خلال عملية بناء ونشر تطبيق لا خادمي يقوم بجلب أحدث الأخبار من خدمة Google News باستخدام Chalice.

متطلبات أساسية لبدء العمل

لضمان سير العمل بسلاسة في هذا الدليل، هناك بعض المتطلبات الأساسية التي يجب توفرها:

  • حساب AWS: يتطلب هذا الشرح وجود حساب AWS. إذا لم يكن لديك حساب بالفعل، يمكنك إنشاء حساب جديد. لا تقلق بشأن التكاليف؛ فالتطبيق الذي سنقوم ببنائه سيستخدم موارد ضمن الطبقة المجانية (Free Tier) من AWS، لذا لن تكون التكاليف عائقًا.
  • تهيئة بيانات الاعتماد: ستحتاج إلى تهيئة إعدادات الأمان وإنشاء المستخدمين والأدوار اللازمة للوصول إلى موارد AWS.

إعداد حساب AWS وتهيئة بيانات الاعتماد

يعتمد Chalice على واجهة سطر الأوامر الخاصة بـ AWS (AWS CLI) في الخلفية لنشر المشاريع. إذا لم تكن قد استخدمت AWS CLI للتعامل مع موارد AWS من قبل، يمكنك تثبيتها باتباع الإرشادات المتوفرة هنا. بمجرد التثبيت، ستحتاج إلى تهيئة AWS CLI لاستخدام بيانات الاعتماد من حساب AWS الخاص بك.

شاشة تهيئة بيانات اعتماد AWS CLI بعد التثبيت

تثبيت AWS Chalice: بوابتك نحو التطبيقات اللاخادمية

الخطوة التالية هي تثبيت Chalice نفسه. سنستخدم Python 3 في هذا الدليل، ولكن يمكنك استخدام أي إصدار من Python تدعمه خدمة AWS Lambda.

التحقق من تثبيت Python

قبل تثبيت Chalice، تأكد من أن Python مثبت على نظامك.

التحقق من إصدار Python المثبت على الجهاز

تثبيت إطار عمل Chalice

بعد التحقق من Python، يمكنك تثبيت Chalice بسهولة باستخدام مدير الحزم pip:

pip install beautifulsoup4 lxml

أمر تثبيت AWS Chalice باستخدام pip في سطر الأوامر

التأكد من نجاح تثبيت Chalice

للتأكد من أن Chalice قد تم تثبيته بنجاح، يمكنك التحقق من إصداره:

التحقق من تثبيت Chalice وإصداره باستخدام سطر الأوامر

إنشاء مشروعك الأول باستخدام Chalice

الآن بعد أن أصبح Chalice جاهزًا، حان الوقت لإنشاء مشروع جديد.

إطلاق مشروع جديد

قم بتشغيل الأمر chalice new-project لإنشاء مشروع جديد. في هذا المثال، سنسمي المشروع daily-news:

chalice new-project daily-news

إنشاء مشروع Chalice جديد باسم daily-news في سطر الأوامر

سيؤدي هذا إلى إنشاء مجلد باسم daily-news في دليلك الحالي. ستلاحظ أن Chalice قد أنشأ العديد من الملفات داخل هذا المجلد. في هذا المقال، سنركز على ملفي app.py و requirements.txt فقط.

بنية مجلد مشروع Chalice الافتراضي مع التركيز على app.py و requirements.txt

فهم ملف app.py الافتراضي

دعنا نلقي نظرة على محتويات ملف app.py الذي تم إنشاؤه تلقائيًا:

from chalice import Chalice

app = Chalice(app_name='daily-news')


@app.route('/')
def index():
    return {'hello': 'world'}

لقد أنشأ الأمر new-project تطبيقًا نموذجيًا باسم daily-news. يحدد هذا الملف مسارًا واحدًا وهو /، والذي يعيد كائن JSON بالصيغة {"hello": "world"} عند استدعائه. يمكنك الآن تعديل هذا القالب وإضافة المزيد من التعليمات البرمجية لجلب الأخبار من مصادر مثل Google News.

تطوير وظائف التطبيق: جلب الأخبار من Google

سنستخدم موجز RSS الخاص بـ Google News لجلب الأخبار. نظرًا لأن موجزات RSS غالبًا ما تتكون من بيانات بتنسيق XML، سنحتاج إلى مكتبة Python تسمى Beautiful Soup لتحليل هذه البيانات.

تحضير البيئة: تثبيت مكتبة Beautiful Soup

يمكنك تثبيت Beautiful Soup ومكتبة تحليل XML الخاصة بها (lxml) باستخدام pip على النحو التالي:

pip install beautifulsoup4 lxml

أمر تثبيت مكتبة Beautiful Soup لتحليل XML في Python

إضافة المكتبات اللازمة إلى app.py

بعد ذلك، أضف الاستيرادات التالية إلى ملف app.py. هذه الاستيرادات ضرورية لإجراء مكالمات HTTP باستخدام urllib وتحليل XML باستخدام bs4 (Beautiful Soup).

from chalice import Chalice
from urllib.request import urlopen
from bs4 import BeautifulSoup

app = Chalice(app_name='daily-news')

بناء دالة لجلب الأخبار من موجز Google RSS

الآن، تحتاج إلى إضافة دالة لجلب موجز RSS من Google News. سنستخدم urllib لإجراء مكالمة HTTP إلى نقطة نهاية RSS الخاصة بـ Google والحصول على الاستجابة. بعد ذلك، يمكنك تحليل الاستجابة لاستخراج عنوان الخبر وتاريخ النشر، وإنشاء قائمة بعناصر الأخبار. لتحقيق ذلك، أضف الكود التالي إلى ملف app.py الخاص بك:

# ... (existing imports and app definition)

def fetch_google_news():
    rss_url = "https://news.google.com/rss?hl=en-US&gl=US&ceid=US:en"
    client = urlopen(rss_url)
    xml_page = client.read()
    client.close()

    soup = BeautifulSoup(xml_page, "xml")
    news_list = []
    for item in soup.findAll('item'):
        title = item.title.text if item.title else 'No Title'
        pub_date = item.pubDate.text if item.pubDate else 'No Date'
        news_list.append({
            'title': title,
            'published_date': pub_date
        })
    return news_list

تحديث دالة الفهرس لعرض الأخبار

قم بتحديث دالة index في ملف app.py لاستدعاء الدالة الجديدة fetch_google_news() وإرجاع قائمة عناصر الأخبار كنتيجة.

# ... (existing code for fetch_google_news and imports)

@app.route('/')
def index():
    return {'news': fetch_google_news()}

تضمين التبعيات في requirements.txt

لاحظ أنك قمت بتثبيت بعض التبعيات (مثل beautifulsoup4 و lxml) لجعل الكود يعمل. تم تثبيت هذه التبعيات محليًا، ولن تكون متاحة لحاوية AWS Lambda في وقت التشغيل. لجعلها متاحة لـ AWS Lambda، ستحتاج إلى تجميعها مع الكود الخاص بك. للقيام بذلك، أضف السطور التالية إلى ملف requirements.txt:

beautifulsoup4
lxml

يقوم Chalice بتضمين هذه التبعيات كجزء من الكود الخاص بك أثناء عملية البناء ويقوم بتحميلها كجزء من دالة Lambda.

نشر تطبيقك اللاخادمي على AWS

الآن بعد أن أصبح الكود جاهزًا، دعنا ننشر هذا التطبيق.

تنفيذ أمر النشر

من داخل مجلد daily-news، قم بتشغيل الأمر chalice deploy:

chalice deploy

أمر نشر تطبيق Chalice على AWS مع عرض مخرجات النشر

يقوم هذا الأمر بنشر واجهة برمجة التطبيقات (API) الخاصة بك على Amazon API Gateway وينشئ دالة جديدة على AWS Lambda.

عرض واجهة برمجة التطبيقات (API) التي تم إنشاؤها بواسطة Chalice في Amazon API Gateway

واجهة برمجة تطبيقات daily-news

دالة Lambda التي تم إنشاؤها لتطبيق daily-news-dev في AWS Lambda

دالة Lambda daily-news-dev

اختبار واجهة برمجة التطبيقات (API) المنشورة

دعنا نحاول الآن الوصول إلى واجهة برمجة التطبيقات. يمكنك استخدام أداة curl لاستدعاء عنوان URL الخاص بـ API Gateway الذي تلقيته أثناء عملية chalice deploy. ستقوم استجابة استدعاء API بإرجاع قائمة بعناصر الأخبار كما هو موضح أدناه:

curl <YOUR_API_GATEWAY_URL>

اختبار واجهة برمجة التطبيقات باستخدام curl وعرض استجابة الأخبار بتنسيق JSON

تنظيف الموارد: إزالة التطبيق من AWS

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

حذف الموارد المنشأة

يمكنك استخدام الأمر chalice delete لحذف جميع الموارد التي تم إنشاؤها عند تشغيل الأمر chalice deploy:

chalice delete

أمر حذف موارد Chalice من AWS في سطر الأوامر

الخلاصة التقنية

تهانينا! لقد قمت للتو بنشر تطبيق لا خادمي بالكامل على AWS باستخدام Chalice. لم يكن الأمر صعبًا على الإطلاق، أليس كذلك؟ تبرز هذه التجربة قوة AWS Chalice كأداة فعالة لتبسيط دورة حياة تطوير ونشر التطبيقات اللاخادمية بلغة Python. إن قدرته على تجريد تعقيدات API Gateway و Lambda تسمح للمطورين بالتركيز بشكل أكبر على منطق الأعمال الأساسي بدلاً من إدارة البنية التحتية.

يمكنك الآن المضي قدمًا وإجراء أي تعديلات على ملف app.py الخاص بك وإعادة تشغيل chalice deploy لإعادة نشر التغييرات. علاوة على ذلك، يتيح لك Chalice دمج تطبيقك اللاخادمي مع خدمات AWS الأخرى مثل Amazon S3 لتخزين البيانات، و Amazon SNS لإدارة الإشعارات، و Amazon SQS لقوائم الانتظار، وغيرها الكثير. هذا يفتح آفاقًا واسعة لبناء حلول سحابية متكاملة وقوية بكفاءة عالية. استكشف المزيد من الدروس التعليمية واستمر في التعلم!

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *