AWS Lambda هي خدمة من خدمات أمازون ويب (AWS) تتيح لك تشغيل الكود الخاص بك استجابةً للأحداث دون إدارة الخوادم. إنها طريقة بسيطة وقابلة للتوسع لبناء التطبيقات.
في هذا الدليل، سأوضح لك كيفية استخدام AWS Lambda مع ثلاث خدمات أخرى:
-
أمازون S3 لتخزين الملفات والصور ومقاطع الفيديو
-
خدمة الإشعارات البسيطة من أمازون (SNS) لإرسال الإشعارات
-
أمازون إيفنت بريدج لجدولة الرسائل
سنجتاز كل شيء خطوة بخطوة.
بنهاية هذا الدليل، مع دمج الخدمات الأخرى، ستكون قد أنشأت تطبيقًا لاقتباسات تجسيد الأهداف يرسل رسائل ملهمة عشوائية لتبقيك متحمسًا ومركزًا على أهدافك.
المتطلبات المسبقة
-
حساب AWS: إذا لم يكن لديك حساب، يمكنك التسجيل هنا.
-
مستودع GitHub: هذا لتخزين الكود المصدري الخاص بك. إذا لم يكن لديك حساب GitHub، يمكنك إنشاء واحد هنا.
-
بيئة تطوير متكاملة (IDE) مثل Visual Studio Code أو Sublime Text.
-
معرفة أساسية في تطوير الويب وأي لغة برمجة تختارها. لقد استخدمت Python لهذا البرنامج التعليمي.
ما ستتعلمه
-
كيفية إنشاء دلو Amazon S3
-
كيفية استخدام خدمة الإخطار البسيطة من Amazon (SNS)
-
كيفية استخدام Amazon Lambda
-
كيفية استخدام أمازون إيفنت بريدج
فهرس المحتويات
الخطوة 1: إعداد بيئة التطوير الخاصة بك
في هذه الخطوة، ستقوم بإعداد كل شيء. ابدأ بتسجيل الدخول إلى حسابك على AWS، ثم قم بتثبيت Python إذا لم تكن لديك ذلك على بيئة تطويرك.
الخطوة 2: إنشاء خدمة التخزين البسيطة Amazon (S3)
قبل أن نبدأ في إنشاء دلو S3، دعنا نفهم أولاً ما هو Amazon S3:
Amazon S3 (خدمة التخزين البسيطة) هي خدمة من Amazon تتيح لك تخزين والوصول إلى أي كمية أو نوع من البيانات، مثل الصور ومقاطع الفيديو والوثائق والنسخ الاحتياطية، كلما احتجت إليها.
الآن بمعرفتك بأساسيات ما هو Amazon S3، دعنا نعود إلى الدرس.
إنشاء دلو S3
هناك عدة طرق لإنشاء دلو S3، ولكن في هذا الدليل، سنستخدم سطر أوامر أوبونتو (CMD)، أو الطرفية الخاصة بك، أو Amazon CloudShell، حسب ما تفضل.
-
اكتب boto3 s3 في شريط البحث على الويب لرؤية قائمة بالوثائق ذات الصلة.
-
انقر على النتيجة الأولى.
- بمجرد فتح الوثائق، انسخ الأمر الأول الذي تراه.
- الصقه في CMD أو الطرفية التي تختارها – لكن تذكر قبل ذلك أن “cd” إلى الدليل الصحيح.
- في الوثائق، قم بالتمرير لأسفل وانقر على “create_bucket.
-
بمجرد فتحه، قم بالتمرير لأسفل إلى “Request Syntax.” انسخ اسم الدلو و تكوين الدلو.
-
المتغيرات الأخرى المدرجة في بناء جملة الطلب اختيارية.
- بمجرد الانتهاء من ذلك، تأكد من حفظ التغييرات.
- ارجع واستدعِ السكربت:
#python3 اسم ملفك
- تشغيل السكربت ينشئ تلقائيًا دلو S3 في Amazon S3 الخاص بك.
- الآن يمكنك الذهاب إلى وحدة التحكم للتحقق مما إذا تم إنشاؤه:
رفع الملفات
مع إنشاء الدلو، يمكننا الآن رفع الملفات من خلال وحدة التحكم. أعتقد أن هناك أيضًا طريقة برمجية لرفع الملفات واختبارها، لكنني لم أستكشف جميع الطرق في الوثائق بعد.
انقر على اسم الدلو لتتم إعادة توجيهك إلى صفحة الكائن. هنا ستقوم برفع ملفاتك للتخزين.
انقر على زر الرفع لرفع ملف. تذكر، نحن بصدد إنشاء تطبيق اقتباسات لتحقيق الأهداف.
الآن بعد أن قمنا بإعداد دلو التخزين:
-
افتح أداة مثل Google Drive أو MS Word أو WPS أو أي محرر مستندات آخر.
-
اكتب الأهداف التي ترغب في تحقيقها.
-
احفظ الملف بصيغة PDF أو DOCX.
-
خذ الوثيقة وارفعها إلى Amazon S3 الخاص بك.
للتأكد مما إذا كان هذا هو الملف الصحيح:
-
انتقل إلى علامة التبويب الأذونات.
-
قم بالتمرير لأسفل إلى حظر الوصول العام.
-
انقر على تحرير وألغِ تحديد المربع.
كما هو موضح أعلاه، تم ضبطه حاليًا على “تشغيل”. قم بإلغاء تحديده لإيقافه “
-
في نفس صفحة إعدادات الدلو، قم بتعديل السياسة.
-
قم بالتمرير لأسفل، وسترى أن سياسة الدلو قد تم إنشاؤها تلقائيًا.
-
اذهب ونسخ السياسة.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
- ارجع إلى محرر سياسة الدلو والصق السياسة.
بمجرد إكمال هذه الخطوات، سيكون للعنصر الخاص بك وصول عام.
عد إلى علامة التبويب العناصر وانقر على عنوان URL للعنصر المقدم أدناه:
مع هذا الرابط، أصبح تحميلك مرئيًا الآن.
الخطوة 3: إنشاء خدمة إشعارات أمازون البسيطة (SNS)
SNS هي خدمة رسائل مُدارة بالكامل تقدمها AWS. تمكّن من التواصل بين التطبيقات أو مباشرة مع المستخدمين عن طريق إرسال الإشعارات.
لإنشاء SNS، اتبع هذه الخطوات:
1. قم بتسجيل الدخول إلى وحدة إدارة AWS
ثم انتقل إلى أمازون SNS. انتقل إلى لوحة معلومات SNS واختر المواضيع من القائمة الجانبية اليسرى.
لإنشاء موضوع:
-
انقر إنشاء موضوع.
-
اختر نوع الموضوع: قياسي (افتراضي) أو FIFO (للرسائل المرتبة).
-
أدخل اسم لموضوعك. (على سبيل المثال،
MyFirstSNSTopic
). -
قم بتكوين الإعدادات الاختيارية مثل التشفير، وسياسات إعادة التسليم، أو العلامات.
-
انقر على إنشاء موضوع.
2. إضافة اشتراكات:
بمجرد إنشاء الموضوع، انقر عليه لفتح صفحة التفاصيل. اختر علامة التبويب الاشتراكات.
انقر على إنشاء اشتراك واختر:
-
البروتوكول يمكن أن يكون بريد إلكتروني، SMS، HTTP/S، Lambda، أو SQS.
-
نقاط النهاية مثل عنوان البريد الإلكتروني، رقم الهاتف، أو URL.
انقر على إنشاء اشتراك.
3. تأكيد الاشتراك:
إذا اخترت البريد الإلكتروني أو الرسائل النصية القصيرة، فسيتم إرسال رابط تأكيد أو رمز إلى نقطة النهاية المقدمة. اتبع التعليمات لتأكيد الاشتراك.
الآن بعد أن قمنا بذلك، دعنا ننشئ وظيفة أمازون لامبدا التي ستقوم بتفعيل SNS حتى يتم إرسال الرسالة إلى بريدك.
الخطوة 4: إنشاء سياسة IAM
تم إنشاء هذه السياسة لتفويض أمازون لامبدا لتفعيل الحدث ولضمان أن CloudWatch يتم تفعيله تلقائيًا لمراقبة أحداث التطبيق.
لإنشاء سياسة، اتبع الخطوات التالية:
1. تسجيل الدخول إلى وحدة إدارة AWS.
في القائمة على الجانب الأيسر، اختر السياسات. ثم:
-
انقر على إنشاء سياسة.
-
اختر علامة التبويب المرئي، ثم حدد خدمة SNS.
-
بعد ذلك، انقر على علامة التبويب اختيار لإنشاء سياسة مخصصة.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:REGION:ACCOUNT_ID:goal_topic"
}
]
}
ثم، استبدل العناصر النائبة التالية بمعلوماتك:
-
region
: منطقتك في AWS (على سبيل المثال،us-east-1
). -
account-id
: معرف حساب AWS الخاص بك. -
topic-name
: اسم موضوع SNS الخاص بك.
2. عرض وإنشاء السياسة:
يمكنك القيام بذلك من خلال اتباع هذه الخطوات:
-
اضغط على زر المراجعة.
-
أعطِ سياستك اسمًا (على سبيل المثال،
LambdaSNSPolicy
)، وخياريًا، وصفًا. -
اضغط إنشاء سياسة.
3. إرفاق السياسة بدور تنفيذ Lambda
الآن، تحتاج إلى إرفاق السياسة بدور تنفيذ Lambda الخاص بك. للقيام بذلك، اتبع هذه الخطوات:
-
اذهب إلى قسم الأدوار في وحدة التحكم IAM.
-
ابحث عن دور التنفيذ وحدده.
-
بعد ذلك، ابحث عن السياسة التي أنشأتها للتو وحددها.
-
اضغط إرفاق السياسة.
سيتم إرفاق كلا السياسيتين تلقائيًا.
الخطوة 5: إنشاء دالة Amazon Lambda
أمازون لامبدا هي خدمة من AWS تتيح لك تشغيل الكود دون إدارة الخوادم. تقوم برفع الكود الخاص بك، وتقوم لامبدا تلقائيًا بتشغيله وتوسيعه عند الحاجة.
اتبع هذه الخطوات لإنشاء دالة أمازون لامبدا:
1. تسجيل الدخول إلى وحدة إدارة AWS:
انتقل إلى AWS لامبدا.
2. إنشاء دالة:
انقر على إنشاء دالة واختر الخيار تأليف من الصفر.
املأ التفاصيل:
-
اسم الدالة: أدخل اسمًا فريدًا (على سبيل المثال،
SNSLambdaFunction
). -
بيئة التشغيل: اختر بيئة التشغيل (على سبيل المثال، بايثون، Node.js، جافا، وما إلى ذلك).
- الدور: اختر أو أنشئ دورًا. إذا كان لديك دور مسبق، اختر استخدام دور موجود. otherwise، اختر إنشاء دور جديد بأذونات لامبدا الأساسية.
- انقر على زر إنشاء الدالة.
3. ألصق الكود:
على صفحة دالة لامبدا، انتقل إلى علامة التبويب التكوين:
تذكر، نحن نحاول استرداد اقتباس. سأضيف ARN للموضوع الذي أنشأناه هنا وأتضمن مفاتيح API الخاصة بي. لكن من أجل هذا الدليل، سأستخدم API مباشرة لاسترداد البيانات.
4. كتابة كود لامبدا:
اذهب إلى علامة التبويب كود في وظيفة لامبدا الخاصة بك. ثم قم بكتابة أو لصق الكود من بيئة التطوير المتكاملة (IDE) لمعالجة الرسائل الواردة من SNS.
مثال:
إليك الكود:
import os
import json
import urllib.request
import boto3
def fetch_random_quote():
"""
Fetches a random quote from the ZenQuotes API.
"""
api_url = "https://zenquotes.io/api/random"
try:
with urllib.request.urlopen(api_url) as response:
data = json.loads(response.read().decode())
if data and isinstance(data, list):
# تنسيق الاقتباس والمؤلف
quote = data[0].get("q", "No quote available")
author = data[0].get("a", "Unknown author")
return f'"{quote}" - {author}'
else:
return "No quote available."
except Exception as e:
print(f"Error fetching random quote: {e}")
return "Failed to fetch quote."
def lambda_handler(event, context):
"""
AWS Lambda handler function to fetch a random quote and publish it to an SNS topic.
"""
# الحصول على ARN موضوع SNS من متغيرات البيئة
sns_topic_arn = os.getenv("SNS_TOPIC_ARN")
sns_client = boto3.client("sns")
# جلب اقتباس عشوائي
quote = fetch_random_quote()
print(f"Fetched Quote: {quote}")
# نشر الاقتباس في SNS
try:
sns_client.publish(
TopicArn=sns_topic_arn,
Message=quote,
Subject="Daily Random Quote to help you stay motivated and inspired to achieve your goals",
)
print("Quote published to SNS successfully.")
except Exception as e:
print(f"Error publishing to SNS: {e}")
return {"statusCode": 500, "body": "Error publishing to SNS"}
return {"statusCode": 200, "body": "Quote sent to SNS"}
5. حفظ:
انقر على زر النشر للحفظ.
6. اختبار وظيفة لامبدا الخاصة بك:
اذهب إلى علامة التبويب اختبار وأنشئ حدث اختبار جديد.
ثم احفظ وشغّل الاختبار. إذا كان ناجحًا، سيتم إرسال رسالة:
هذا يعني أنه تم إنشاء الرسالة لك
أخيرًا، تحقق من بريدك الإلكتروني أو الرسائل القصيرة، اعتمادًا على نقطة النهاية التي استخدمتها في هذا الدليل. في حالتي، استخدمت البريد الإلكتروني.
الخطوة 6: إنشاء EventBridge
Amazon EventBridge هي خدمة تساعدك على ربط التطبيقات وخدمات AWS مثل Amazon SNS وAmazon Lambda.
لإنشاء قاعدة Amazon EventBridge، اتبع الخطوات التالية:
1. الانتقال إلى EventBridge:
في شريط البحث، اكتب EventBridge واختره من قائمة الخدمات.
2. إنشاء قاعدة:
في وحدة تحكم EventBridge، انقر على القواعد في اللوحة اليسرى. ثم انقر على زر إنشاء قاعدة.
3. إعداد تفاصيل القاعدة:
-
الاسم: أدخل اسمًا فريدًا لقاعدتك.
-
الوصف (اختياري): أضف وصفًا لشرح ما تفعله هذه القاعدة.
4. اختر حافلة الأحداث:
اختر حافلة الأحداث الافتراضية (أو حافلة أحداث أخرى إذا كنت قد أنشأت واحدة).
5. تعريف نمط الحدث أو الجدول الزمني:
لنمط الحدث:
-
اختر خدمة AWS كمصدر للحدث.
-
اختر نوع الحدث المحدد (على سبيل المثال، تحميل ملف S3 أو تغيير حالة مثيل EC2).
للجدول الزمني:
- اختر خيار الجدول الزمني لتشغيل القاعدة على فترات ثابتة (على سبيل المثال، كل 5 دقائق).
- انقر على متابعة. سيأخذك ذلك إلى صفحة التفاصيل المحددة حيث:
-
قم بالتمرير لأسفل وانقر على منظم الكرون. يحدد منظم الكرون الوقت الذي سيتم فيه إرسال الرسالة.
-
اختر “إيقاف” لخيار نافذة الوقت المرن.
-
قم بمراجعة تفاصيل القاعدة للتأكد من أن كل شيء صحيح.
-
انقر على زر “التالي” للانتقال إلى الصفحة الهدف.
الصورة أعلاه تظهر متى سيتم إرسال الرسائل.
- على صفحة الهدف، اختر AWS Lambda لاستدعاء وظيفتك.
- انتقل لأسفل لاستدعاء واختيار الوظيفة التي أنشأتها.
- انقر على الزر “التالي” للمتابعة. سيوجهك هذا إلى صفحة الإعدادات. في قسم الأذونات، اختر “استخدام القاعدة الحالية”.
- وأخيرًا، انتقل إلى المراجعة وأنشئ جدول زمني:
- الصفحة التالية تظهر لك جميع التفاصيل:
استخدام EventBrige ينشئ جدول زمني للمستخدمين.
الخطوة 7: تحميل الشيفرة الخاصة بك
أخيرًا، قم برفع كودك إلى GitHub وضمّن الوثائق المناسبة للمساعدة في توضيح كيفية عمل الكود.
تحقق من هذه الوثائق إذا كنت لا تعرف كيف: رفع مشروع إلى GitHub.
الخاتمة
إذا كنت قد اتبعت جميع هذه الخطوات، فستكون قد أنشأت تطبيق اقتباسات تجسيد الأهداف باستخدام AWS Lambda وAmazon S3 وAmazon SNS وAmazon EventBridge. يقوم هذا التطبيق بجلب الاقتباسات التحفيزية وإرسالها إلى المشتركين وفق جدول زمني.
يمكنك العثور على رابط المستودع هنا.
لا تتردد في مشاركة تقدمك أو طرح الأسئلة إذا كان لديك أي مشكلات.
إذا وجدت هذه المقالة مفيدة، شاركها مع الآخرين.
ابقَ على اطلاع بمشاريعي من خلال متابعتي على تويتر ولينكد إن وGitHub
شكرًا لقراءتك 💖.
تنبيه:
الموارد المعروضة في هذه المقالة، بما في ذلك دلو S3 وARN الخاص به، قد تم حذفها ولم تعد موجودة. التفاصيل المرئية في لقطات الشاشة تُستخدم فقط لأغراض العرض.
Source:
https://www.freecodecamp.org/news/how-to-build-an-application-with-aws-lambda/