المشاريع على AWS

إنشاء تطبيق ويب حديث

نشر تطبيق ويب، والاتصال بقاعدة بيانات، وتحليل سلوك المستخدم

الوحدة 3: تخزين معلومات Mysfit

في هذه الوحدة، سيتم إعداد Amazon DynamoDB لتخزين معلومات mysfit في جدول قاعدة بيانات مركزي.

نظرة عامة

لديك الآن خدمة تم نشرها وقناة CI/CD قيد التشغيل لإجراء التغييرات على الخدمة تلقائيًا في أي وقت يتم فيه تحديث مستودع التعليمات البرمجية، وبالتالي يمكنك نقل ميزات التطبيق الجديدة من المفهوم إلى الإتاحة لعملاء Mythical Mysfits. مع هذه المرونة الزائدة، سنقوم بإضافة جزء وظيفي آخر إلى موقع ويب Mythical Mysfits، وهو طبقة البيانات.

في هذه الوحدة، ستنشئ جدولاً في Amazon DynamoDB، وهو عبارة عن خدمة قاعدة بيانات بتنسيق NoSQLمدارة وقابلة للتكيف على AWS تتسم بأداء فائق السرعة. وبدلاً من تخزين كل بيانات Mysfits في ملف JSON ثابت، سيتم تخزينها في قاعدة بيانات لجعل مواقع الويب قابلة للتوسع والتكيف أكثر في المستقبل.

الرسم التخطيطي للبنية

الرسم التخطيطي لـ fargate وdynamodb

 وقت الإكمال

20 دقيقة

 الخدمات المستخدمة

تعليمات التنفيذ

  • أ: إنشاء جدول DynamoDB

    لإضافة جدول DynamoDB إلى المخطط، أضفنا ملف إدخال JSON CLI آخر بحيث يعرف جدولاً باسم MysfitsTable. سيتضمن هذا الجدول مؤشرًا أساسيًا تحدده سمة مفتاح التجزئة تسمى MysfitId، ومؤشرين ثانويين آخرين. سيتضمن المؤشر الثانوي الأول مفتاح التجزئة Species ومفتاح نطاق MysfitId، وسيتضمن المؤشر الثانوي الثاني مفتاح التجزئة Alignment ومفتاح نطاق MysfitId.

    سيتيح المؤشران الثانويان تنفيذ الاستعلامات عن الجدول لاسترداد كافة بيانات mysfits التي تتطابق مع Species أو Alignment لتمكين وظيفة التصفية التي ربما لوحظ عدم تشغيلها على موقع الويب حتى الآن. يمكنك عرض الملف على ~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json. لا يلزم إدخال تغييرات على هذا الملف؛ فهو جاهز للتنفيذ. لمعرفة المزيد عن المؤشرات في DynamoDB وغيرها من المفاهيم، انتقل إلى هذه الصفحة. 

    لإنشاء جدول باستخدام AWS CLI، نفذ الأمر التالي في المحطة الطرفية Cloud9:

    aws dynamodb create-table --cli-input-json file://~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json

    بعد تشغيل الأمر، يمكنك عرض تفاصيل الجدول الذي أنشأته حديثًا عن طريق تنفيذ أمر AWS CLI التالي في المحطة الطرفية:

    aws dynamodb describe-table --table-name MysfitsTable

    إذا نفذنا الأمر التالي لاستعادة جميع العناصر المخزنة في الجدول، فستلاحظ أن الجدول فارغ:

    aws dynamodb scan --table-name MysfitsTable
    {
        "Count": 0,
        "Items": [],
        "ScannedCount": 0,
        "ConsumedCapacity": null
    }
    ب: إضافة العناصر إلى جدول DynamoDB

    يتوفر أيضًا ملف JSON يمكن استخدامه في الإدخال المجمع لعدد عناصر Mysfit في هذا الجدول. وسيتم إنجاز هذا من خلال DynamoDB API BatchWriteItem.

    لاستدعاء واجهة برمجة التطبيقات باستخدام ملف JSON المتوفر، نفذ الأمر التالي للمحطة الطرفية (ينبغي أن تذكر الإجابة من الخدمة أنه لا يوجد عناصر لم تتم معالجتها):

    aws dynamodb batch-write-item --request-items file://~/environment/aws-modern-application-workshop/module-3/aws-cli/populate-dynamodb.json

    الآن، إذا شغلت الأمر ذاته لفحص محتوى الجدول بالكامل، سترى أنه تم تحميل العناصر في الجدول:

    aws dynamodb scan --table-name MysfitsTable
  • أ: نسخ التعليمات البرمجية لخدمة Flask المحدثة

    تم إدراج البيانات في الجدول الآن، لنقم بتعديل التعليمات البرمجية للتطبيق من هذا الجدول بدلاً من الرجوع إلى ملف JSON الثابت الذي استُخدم في الوحدة 2. أدرجنا مجموعة جديدة من ملفات Python للخدمة المصغرة Flask، ولكن بدلًا من قراءة ملف JSON الثابت، سنقدم طلبًا إلى DynamoDB.

    يتم تكوين الطلب باستخدام AWS Python SDK تسمى boto3. تتسم مجموعة SDK بأنها قوية غير أنها طريقة بسيطة للتفاعل مع خدمات AWS عبر التعليمات البرمجية بلغة Python. تمكّنك هذه المجموعة من استخدام تعريفات العميل للخدمة والوظائف التي تتشابه بدرجة كبيرة مع واجهات برمجة التطبيقات من AWS وأوامر CLI التي تنفذها بالفعل باعتبارها جزءًا من هذه الورشة. يمكن نقل هذه الأوامر بسهولة إلى تعليمات بلغة Python قيد التشغيل عند استخدام boto3.

    لنسخ الملفات الجديدة إلى دليل مستودع CodeCommit، نفذ الأمر التالي في المحطة الطرفية:

    cp ~/environment/aws-modern-application-workshop/module-3/app/service/* ~/environment/MythicalMysfitsService-Repository/service/
    ب: نسخ التعليمات البرمجية لخدمة Flask المحدثة

    الآن، نريد أن نتأكد من تغيير هذه التعليمات البرمجية إلى CodeCommit باستخدام عميل سطر الأوامر git.

    شغّل الأوامر التالية للتحقق من تغييرات التعليمات البرمجية الجديدة وتشغيل قناة CI/CD.

    cd ~/environment/MythicalMysfitsService-Repository
    git add .
    git commit -m "Add new integration to DynamoDB."
    git push

    الآن، في مدة 5 إلى 10 دقائق فقط، ستلاحظ إجراء التغييرات في التعليمات البرمجية عبر قناة CI/CD بالكامل في CodePipeline، وحتى خدمة Flask التي تم نشرها إلى AWS Fargate على Amazon ECS.

    لا تتردد في استكشاف وحدة تحكم AWS CodePipeline لمعرفة تقدم التغييرات عبر قناتك.

  • أخيرًا، نريد أن ننشر صفحة index.html جديدة في حاوية S3 بحيث يتم استخدام وظيفة واجهة برمجة التطبيقات الجديدة باستخدام سلاسل الاستعلام. يوجد ملف ndex.html الجديد على ~/environment/aws-modern-application-workshop/module-3/web/index.html.

    افتح هذا الملف في Cloud9 IDE واستبدل السلسلة التي تشير إلى «REPLACE_ME» مثلما فعلت في الوحدة 2، باستخدام نقطة النهاية NLB الصحيحة. تذكر ألا تدرج مسار /mysfits.

    ارجع إلى الملف الذي حررته بالفعل في دليل /module-2/ إذا احتجت إليه. بعد تغيير نقطة النهاية إلى النقطة في NLB، حمل ملف index.html الجديد عن طريق تشغيل الأمر التالي (بحيث يتم التغيير إلى اسم الحاوية التي أنشأتها في الوحدة 1:

    aws s3 cp --recursive ~/environment/aws-modern-application-workshop/module-3/web/ s3://your_bucket_name_here/

    أعد زيارة موقع ويب Mythical Mysfits لترى التصميم الجديد أثناء تحميله من جدول DynamoDB وطريقة عمل وظيفة التصفية!

    يشمل ذلك الوحدة 3.

التالي: إعداد تسجيل المستخدم.