1. نظرة عامة
تهدف سلسلة الدروس التطبيقية حول الترميز بدون خادم (البرامج التعليمية العملية) والفيديوهات ذات الصلة إلى مساعدة مطوّري Google Cloud الذين لا يستخدمون خوادم على تحديث تطبيقاتهم من خلال إرشادهم خلال عملية واحدة أو أكثر من عمليات نقل البيانات، بعيدًا عن الخدمات القديمة في المقام الأول. يؤدي ذلك إلى تسهيل حمل التطبيقات وتوفير المزيد من الخيارات والمرونة، ما يتيح لك الدمج مع مجموعة أكبر من منتجات Cloud والوصول إليها والترقية بسهولة إلى الإصدارات الأحدث باللغات. مع تركيزنا في البداية على مستخدمي Cloud الأوائل، لا سيما مطوّري App Engine (البيئة العادية)، فإنّ هذه السلسلة واسعة بما يكفي لتشمل أنظمة أساسية أخرى بدون خادم، مثل Cloud Functions وCloud Run أو أي منصة أخرى إن وُجدت.
في السابق، كان على المطوّرين نقل البيانات من "الخدمات المجمّعة" القديمة في App Engine. مثل Datastore وMemcache قبل أن تتمكن من ترقية إصدارات اللغات، وهما محاولتان متشابهتان محتملتان. ومن خلال إتاحة العديد من الخدمات المُجمّعة للمفاتيح في خدمة App Engine من الجيل الثاني، يمكن للمطوّرين الآن نقل تطبيقاتهم إلى أحدث بيئات تشغيل مع الاستمرار في استخدام (معظم) الخدمات المجمّعة. يرشدك هذا الدرس التطبيقي إلى خطوات ترقية نموذج تطبيق من Python 2 إلى 3 مع الحفاظ على استخدام خدمة Datastore المجمّعة (عبر مكتبة App Engine NDB). لا يتطلب استخدام معظم الخدمات المجمّعة سوى إجراء تحديث بسيط للرمز كما سيتم تناوله في هذا البرنامج التعليمي، لكن هناك خدمات أخرى تتطلب تغييرات أكثر شمولاً. وسوف نتناولها في "الجزء 2"، وحدة متابعة ودرس تطبيقي حول الترميز.
ستتعرَّف على كيفية إجراء ما يلي:
- نموذج المنفذ لتطبيق App Engine من Python 2 إلى 3
- تحديث إعدادات التطبيق لتضمين حزمة تطوير البرامج (SDK) لـ App Engine
- إضافة رمز حزمة SDK إلى التطبيق الذي يتوافق مع الخدمات المجمّعة في بيئات تشغيل الجيل الثاني مثل Python 3
المتطلبات
- أن يكون لديك مشروع على Google Cloud مع حساب فوترة نشط على Google Cloud Platform
- المهارات الأساسية في لغة بايثون
- المعرفة العملية بأوامر نظام التشغيل Linux الشائعة
- معرفة أساسية حول تطوير ونشر تطبيقات App Engine
- يجب أن يكون لديك تطبيق App Engine صالح للوحدة 1 (أكمل الدرس التطبيقي حول الترميز [يُنصح به] أو انسخ التطبيق من المستودع)
استطلاع
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك مع Python؟
ما هو تقييمك لتجربتك في استخدام خدمات Google Cloud؟
2. الخلفية
خدمة App Engine الأصلية تم إطلاقها في عام 2008 وتضم مجموعة من واجهات برمجة التطبيقات القديمة (المعروفة الآن باسم الخدمات المجمّعة) لكي يتمكّن المطوّرون من إنشاء التطبيقات ونشرها على مستوى العالم بسهولة. وتشمل هذه الخدمات مخزن البيانات وMemcache وقائمة انتظار المهام. على الرغم من سهولة نقل التطبيقات، شعر المستخدمون بالقلق بشأن قابلية نقل تطبيقاتهم باستخدام واجهات برمجة تطبيقات خاصة تربطهم بـ App Engine وأرادوا زيادة إمكانية نقل تطبيقاتهم. هذا فضلاً عن حقيقة أنّ العديد من هذه الخدمات المجمّعة التي تحوّلت إلى منتجات Cloud مستقلة تابعة لها، ما دفع فريق App Engine إلى إطلاق منصة من الجيل التالي في عام 2018 بدونها.
تحدّث الآن مع مطوري Python 2 المتحمسين للترقية إلى Python 3. كان هناك حاجة إلى تطبيق 2.x الذي يستخدم الخدمات المجمّعة للابتعاد عن هذه الخدمات قبل أن يتم نقل تطبيقاتها إلى الإصدار 3.x، وهو ما يمثل عمليتَي نقل إجباريتَين متتاليتَين، وربما تحدّيًا كبيرًا أيضًا. للمساعدة في عملية الانتقال هذه، قدَّم فريق App Engine في خريف 2021 "ثقبًا دودًا". إلى الماضي، ما يسمح للتطبيقات التي تعمل في بيئات تشغيل من الجيل التالي بالوصول إلى العديد من تلك الخدمات المجمّعة. على الرغم من أنّ هذا الإصدار لا يشتمل على جميع الخدمات المتاحة في بيئات التشغيل الأصلية، تتوفّر جهات فاعلة رئيسية، مثل "مخزن البيانات" و"قائمة انتظار المهام" وMemcache.
يشرح هذا الدرس التطبيقي حول الترميز التغييرات اللازمة لترقية تطبيقك إلى Python 3 مع الحفاظ على استخدام الخدمات المجمّعة. والهدف من ذلك هو تشغيل تطبيقاتك على أحدث بيئات تشغيل، ما يسمح لك بعد ذلك بنقل البيانات من الخدمات المجمّعة إلى الخدمات المكافئة والمستقلة في السحابة الإلكترونية أو الخدمات البديلة التابعة لجهات خارجية حسب المخططات الزمنية الخاصة بك، بدلاً من جعلها أداة لحظر الترقية إلى إصدار 3.x. على الرغم من أنّ التبديل من الخدمات المجمّعة ليس مطلوبًا بعد الآن، يمنحك ذلك المزيد من قابلية النقل والمرونة في ما يتعلق بمكان استضافة التطبيقات، بما في ذلك الانتقال إلى المنصات التي قد تخدم أعباء العمل بشكل أفضل، أو ببساطة استخدام App Engine أثناء الترقية إلى إصدار لغة أكثر حداثة كما هو موضّح للتو.
الوحدة 1 - نموذج تطبيق Python 2 يستخدم خدمة تخزين البيانات المجمّعة عبر App Engine NDB. سبق أن نقل التطبيق أطر العمل من webapp2 إلى Flask، وتم إكماله في الدرس التطبيقي حول الترميز الخاص بالوحدة 1، ولكن مع الإبقاء على استخدام "مخزن البيانات" بدون تغيير.
يتضمن هذا الدليل التوجيهي الخطوات التالية:
- الإعداد/التمهيد
- تعديل الإعدادات
- تعديل رمز التطبيق
3- الإعداد/التمهيد
يوضّح هذا القسم كيفية تنفيذ ما يلي:
- إعداد مشروعك على Google Cloud
- الحصول على نموذج تطبيق أساسي
- (إعادة) نشر التطبيق الأساسي والتحقّق من صحته
تضمن هذه الخطوات بدء العمل بالتعليمة البرمجية.
1. إعداد المشروع
إذا أكملت الدرس التطبيقي حول الترميز الخاص بالوحدة 1، ننصحك بإعادة استخدام المشروع نفسه (والرمز البرمجي). ويمكنك بدلاً من ذلك إنشاء مشروع جديد على Cloud أو إعادة استخدام مشروع حالي آخر. يُرجى التأكُّد من أنّ المشروع يشتمل على حساب فوترة نشط تم تفعيل خدمة App Engine فيه.
2. الحصول على نموذج تطبيق أساسي
أحد المتطلّبات الأساسية لهذا الدرس التطبيقي حول الترميز هو أن يكون لديك تطبيق App Engine صالح للوحدة 1: عليك إكمال الدرس التطبيقي حول الترميز للوحدة 1 (يُنصح به) أو نسخ تطبيق الوحدة 1 من المستودع. سواء كنت تستخدم رمزك أو رمزنا، فإن رمز الوحدة 1 هو المكان الذي سوف "تبدأ" فيه. يرشدك الدرس التطبيقي هذا حول الترميز خلال كل خطوة، وينتهي بتعليمة برمجية تشبه ما هو موجود في مجلد Repo للوحدة 7 "FINISH".
- START: مجلد الوحدة 1 (لغة بايثون 2)
- FINISH: مجلد الوحدة 1b (بايثون 3)
- المستودع بالكامل (لنسخ ملف ZIP أو تنزيله)
بغض النظر عن تطبيق الوحدة 1 الذي تستخدمه، يجب أن يبدو المجلد كما يلي، على الأرجح مع مجلد lib
أيضًا:
$ ls README.md appengine_config.py requirements.txt app.yaml main.py templates
3- (إعادة نشر التطبيق الأساسي)
نفِّذ الخطوات التالية من أجل (إعادة) نشر تطبيق الوحدة 1:
- احذف مجلد "
lib
" في حال توفّره وشغِّل:pip install -t lib -r requirements.txt
لإعادة تعبئة "lib
". قد تحتاج إلى استخدام الأمرpip2
بدلاً من ذلك في حال تثبيت Python 2 وPython 3. - تأكد من تثبيت أداة سطر الأوامر
gcloud
وإعدادها ومراجعة استخدامها. - عليك ضبط مشروعك على Google Cloud في حقل
gcloud config set project
PROJECT_ID
إذا كنت لا تريد إدخالPROJECT_ID
مع كل أمرgcloud
يتم إصداره. - نشر نموذج التطبيق باستخدام "
gcloud app deploy
" - التأكُّد من تشغيل تطبيق الوحدة 1 على النحو المتوقع بدون مشكلة في عرض آخر الزيارات (الموضّحة أدناه)
4. تعديل الإعدادات
بعد تنفيذ هذه الخطوات بنجاح والتأكّد من عمل تطبيق الويب، ستكون جاهزًا لنقل هذا التطبيق إلى Python 3، بدءًا من config.
إضافة حزمة SDK إلى ملفrequirements.txt
يقلل وقت تشغيل Python 3 من App Engine بشكل كبير من النفقات العامة لاستخدام مكتبات الجهات الخارجية. كل ما يلزم هو إدراجها في requirements.txt
. لاستخدام الخدمات المجمّعة في Python 3، أضِف حزمة App Engine SDK (appengine-python-standard
) إليها. تنضم حزمة SDK إلى Flask من الوحدة 1:
flask
appengine-python-standard
تحديث app.yaml
اتّبِع الخطوات أدناه لتطبيق تغييرات الإعدادات على ملف app.yaml
:
- استبدال التوجيه
runtime
بإصدار Python 3 المتوافق على سبيل المثال، حددpython310
للغة Python 3.10. - احذف التوجيهَين
threadsafe
وapi_version
لأنّهما لم يتم استخدامهما في Python 3. - احذف القسم
handlers
بالكامل لأنّ هذا التطبيق لا يحتوي إلا على معالِجات النصوص البرمجية. إذا كان تطبيقك يحتوي على معالِجات ملفات ثابتة، اتركها كما هي فيhandlers
. - لا يتوافق وقت تشغيل Python 3 مع مكتبات الجهات الخارجية المضمَّنة كما هو الحال في بيئة تشغيل Python 2. إذا كان تطبيقك يحتوي على قسم
libraries
فيapp.yaml
، احذف القسم بأكمله. (يجب إدراج الحِزم المطلوبة فيrequirements.txt
فقط، مثل المكتبات غير المضمّنة). لا يحتوي نموذج التطبيق على قسمlibraries
، لذا انتقِل إلى الخطوة التالية. - يمكنك إنشاء توجيه
app_engine_apis
تم ضبطه علىtrue
لاستخدامه، وهذا يتوافق مع إضافة حزمة حزمة تطوير البرامج (SDK) لـ App Engine إلىrequirements.txt
أعلاه.
ملخّص التغييرات المطلوبة التي يجب إجراؤها على "app.yaml
":
قبل:
runtime: python27
threadsafe: yes
api_version: 1
handlers:
- url: /.*
script: main.app
بعد:
runtime: python310
app_engine_apis: true
ملفات الإعداد الأخرى
لن تحتاج إلى حذف جميع الحِزم التابعة لجهات خارجية، لأنّها غير مدرَجة في requirements.txt
إلا إذا كان لديك عنصر خاص في appengine_config.py
. وبالمثل، نظرًا لأن جميع المكتبات التابعة لجهات خارجية يتم تثبيتها تلقائيًا أثناء عملية التصميم، ما مِن حاجة إلى نسخها أو إنشاء مورّد لها، ما يعني أنّه لن تعود هناك حاجة إلى الأمر pip install
أو مجلد lib
، لذا يمكنك حذف هذه المكتبات. التلخيص:
- حذف ملف
appengine_config.py
- حذف مجلد واحد (
lib
)
وبهذا نكون قد انتهينا من جميع تغييرات الضبط اللازمة.
5- تعديل رمز التطبيق
يتطلب الوصول إلى معظم الخدمات المجمّعة المتاحة في بيئة وقت تشغيل Python 3 رمزًا قصيرًا يتضمّن كائن تطبيق واجهة بوابة خادم الويب (WSGI) في main.py
. دالة برنامج التضمين هي google.appengine.api.wrap_wsgi_app()
، ويمكنك استخدامها عن طريق استيرادها وإحاطة كائن WSGI بها. أدخِل التغييرات أدناه لعرض التحديث المطلوب لتطبيق Flask في main.py
:
قبل:
from flask import Flask, render_template, request
from google.appengine.ext import ndb
app = Flask(__name__)
بعد:
from flask import Flask, render_template, request
from google.appengine.api import wrap_wsgi_app
from google.appengine.ext import ndb
app = Flask(__name__)
app.wsgi_app = wrap_wsgi_app(app.wsgi_app)
يمكنك الاطّلاع على المستندات الخاصة بأمثلة حول التفاف WSGI لأُطر عمل Python الأخرى.
على الرغم من أنّ هذا المثال يتيح لتطبيقك إمكانية الوصول إلى معظم الخدمات المجمّعة في Python 3، تتطلب خدمات أخرى، مثل Blobstore وMail، رمزًا إضافيًا. وسنتناول هذه العينات في وحدة نقل أخرى.
وبهذا، نختتم جميع التغييرات اللازمة لإضافة استخدام خدمات App Engine المجمّعة إلى نموذج تطبيق الوحدة 1. هذا التطبيق متوافق بالفعل مع بايثون 2 و3، لذا لا توجد تغييرات إضافية لنقله إلى بايثون 3 غير ما قمت به بالفعل في التهيئة. الخطوة الأخيرة: نشر هذا التطبيق المعدَّل في الجيل التالي من بيئة تشغيل App Engine Python 3 والتأكّد من نجاح التحديثات.
6- الملخّص/تنظيف البيانات
يلخّص هذا القسم هذا الدرس التطبيقي حول الترميز من خلال نشر التطبيق، والتأكّد من أنّه يعمل على النحو المطلوب وفي أي نتائج أخرى. بعد التحقق من صحة التطبيق، عليك إجراء أي عملية إزالة ومراعاة الخطوات التالية.
نشر التطبيق والتحقق منه
انشر تطبيق Python 3 باستخدام gcloud app deploy
، وتأكَّد من أنّ التطبيق يعمل على النحو المطلوب في Python 2. لا يتغير أي من الوظائف، لذا يجب أن يكون الناتج مطابقًا لتطبيق الوحدة 1:
الملاحظات النهائية
- قارن البيانات المتوفرة لديك بما هو موجود في مجلد الوحدة 1ب (FINISH) إذا ارتكبت خطأً أثناء تنفيذ الخطوات، وعدّله حسب الضرورة.
- يمكنك المقارنة بين الوحدة 0
main.py
جنبًا إلى جنب مع الوحدة 1bmain.py
على هذه الصفحة إذا كان تطبيقك لا يزال يستخدمwebapp2
، ثم أكمِل الدرس التطبيقي حول الترميز للوحدة 1 لمعرفة كيفية الانتقال منwebapp2
إلى Flask.
تهانينا على اتخاذك الخطوة الأولى لنقل تطبيقات Python 2 App Engine إلى Python 3 مع الاحتفاظ باستخدامها للخدمات المجمّعة في الوقت الحالي.
تَنظيم
بنود عامة
إذا كنت قد انتهيت الآن، ننصحك بإيقاف تطبيق App Engine لتجنُّب تحمُّل تكلفة الفوترة. ومع ذلك، إذا أردت إجراء المزيد من الاختبارات أو التجارب، فمنصة App Engine لها حصة مجانية، ولن يتم تحصيل أي رسوم منك طالما أنك لا تتجاوز فئة الاستخدام هذه. هذه المعلومات متعلقة بالحوسبة، ولكن قد يتم أيضًا فرض رسوم على خدمات App Engine ذات الصلة، لذا يُرجى التحقق من صفحة الأسعار للحصول على مزيد من المعلومات. وإذا كانت عملية النقل هذه تشمل خدمات Cloud أخرى، يتم تحصيل الرسوم منها بشكل منفصل. وفي كلتا الحالتين، يمكنك الاطّلاع على قسم "الدروس التطبيقية حول الترميز" إذا كان ذلك منطبقًا. أدناه.
للإفصاح الكامل عن المعلومات، يتحمّل النشر على منصة حوسبة بدون خادم في Google Cloud مثل App Engine تكاليف بسيطة لإنشاء المحتوى وتخزينه. تمتلك خدمة Cloud Build حصتها المجانية الخاصة، كما هي الحال في Cloud Storage. يستهلك تخزين تلك الصورة بعضًا من هذه الحصة. ومع ذلك، قد تكون مقيمًا في منطقة لا يتوفر بها هذا المستوى المجاني، لذا عليك الانتباه إلى استخدام مساحة التخزين لتقليل التكاليف المحتملة. "مجلدات" محددة في Cloud Storage التي يجب عليك مراجعتها ما يلي:
console.cloud.google.com/storage/browser/LOC.artifacts.PROJECT_ID.appspot.com/containers/images
console.cloud.google.com/storage/browser/staging.PROJECT_ID.appspot.com
- تعتمد روابط مساحة التخزين أعلاه على
PROJECT_ID
و *LOC
*، على سبيل المثال "us
". إذا كان التطبيق مستضافًا في الولايات المتحدة الأمريكية
من ناحية أخرى، إذا كنت لا تريد مواصلة استخدام هذا التطبيق أو الدروس التطبيقية الأخرى ذات الصلة لنقل البيانات وأردت حذف جميع البيانات بالكامل، عليك إيقاف مشروعك.
خصوصيّة هذا الدرس التطبيقي حول الترميز
الخدمات المدرَجة أدناه هي خدمات فريدة لهذا الدرس التطبيقي حول الترميز. ارجع إلى وثائق كل منتج لمزيد من المعلومات:
- يتم تقديم خدمة مخزن بيانات App Engine من خلال Cloud Datastore (Cloud Firestore في وضع "مخزن البيانات") التي توفّر أيضًا فئة مجانية. يمكنك الاطّلاع على صفحة الأسعار لمزيد من المعلومات.
الخطوات التالية
هناك عدة اتجاهات للانطلاق من هنا:
- تحديث الرمز باستخدام خدمات مضمّنة تتطلب المزيد من التغييرات في الرموز
- نقل البيانات من الخدمات المجمّعة إلى منتجات Cloud المستقلة
- نقل البيانات من App Engine إلى نظام أساسي آخر بدون خادم على السحابة الإلكترونية
يتطلب الوصول إلى الخدمات المجمّعة الأخرى مثل Blobstore والبريد والمؤجلة مزيدًا من التغييرات على الرمز. تشمل وحدات نقل البيانات التي تركّز على التوقف عن استخدام خدمات App Engine القديمة التي يجب أخذها في الاعتبار ما يلي:
- الوحدة 2: NDB مع App Engine إلى Cloud NDB
- الوحدات 7-9: قائمة انتظار مهام App Engine (دفع المهام) إلى Cloud Tasks
- الوحدات 12-13: نقل App Engine Memcache إلى Cloud Memorystore
- الوحدات 15 إلى 16: نقل App Engine Blobstore إلى Cloud Storage
- الوحدات 18-19: قائمة انتظار مهام App Engine (سحب المهام) إلى Cloud Pub/Sub
لم يعد App Engine النظام الأساسي الوحيد بدون خوادم في Google Cloud. إذا كان لديك تطبيق App Engine صغير أو تطبيق ذو وظائف محدودة وتريد تحويله إلى خدمة مصغّرة مستقلة، أو إذا كنت تريد تقسيم تطبيق متجانس إلى عدة مكوّنات قابلة لإعادة الاستخدام، هذه هي الأسباب الوجيهة للانتقال إلى وظائف السحابة الإلكترونية. إذا أصبحت عملية التطوير جزءًا من سير عمل تطوير التطبيقات، خاصةً إذا كانت تتألف من مسار CI/CD (التكامل المستمر أو العرض أو النشر المستمر)، ننصحك بنقل البيانات إلى تشغيل السحابة الإلكترونية. تغطي الوحدات التالية هذه السيناريوهات:
- نقل البيانات من App Engine إلى Cloud Functions: راجِع الوحدة 11.
- نقل البيانات من App Engine إلى Cloud Run: راجِع الوحدة 4 لتضمين تطبيقك مع Docker، أو الوحدة 5 لتنفيذ ذلك بدون حاويات أو معلومات Docker أو
Dockerfile
s.
إنّ التبديل إلى نظام أساسي آخر بدون خادم هو إجراء اختياري، وننصحك بالتفكير في أفضل الخيارات لتطبيقاتك وحالات الاستخدام قبل إجراء أي تغييرات.
بغض النظر عن وحدة نقل البيانات التي تفكر فيها بعد ذلك، يمكن الوصول إلى كل محتوى محطة النقل بدون خادم (الدروس التطبيقية حول الترميز والفيديوهات ورمز المصدر [عند توفّره]) من خلال مستودع البرامج المفتوحة المصدر. يوفّر README
الخاص بالمستودع أيضًا إرشادات حول عمليات نقل البيانات التي يجب أخذها في الاعتبار وأي "طلب" ذي صلة. لوحدات النقل.
7. مراجع إضافية
في ما يلي مراجع إضافية لمساعدة المطوّرين الذين يستكشفون وحدة نقل البيانات هذه أو وحدة النقل ذات الصلة بها وكذلك المنتجات ذات الصلة. يشمل ذلك أماكن لتقديم ملاحظات حول هذا المحتوى وروابط إلى التعليمات البرمجية ومستندات مختلفة قد تجدها مفيدة.
مشاكل أو ملاحظات حول درس تطبيقي حول الترميز
إذا وجدت أي مشاكل في هذا الدرس التطبيقي حول الترميز، يُرجى البحث عن مشكلتك أولاً قبل ملء النموذج. روابط للبحث وإنشاء مشاكل جديدة:
موارد نقل البيانات
يمكن العثور على روابط لمجلدات repo للوحدة 1 (START) والوحدة 1b (FINISH) في الجدول أدناه. ويمكن الوصول إليها أيضًا من المستودع الخاص بجميع عمليات نقل البيانات على درس تطبيقي حول الترميز في App Engine.
Codelab | Python 2 | Python 3 |
لا ينطبق | ||
الوحدة 17 (هذا الدرس التطبيقي حول الترميز) | لا ينطبق | code (الرمز) (mod1b-flask) |
مراجع على الإنترنت
في ما يلي موارد على الإنترنت قد تكون ذات صلة بهذا البرنامج التعليمي:
خدمات App Engine المجمّعة
- الوصول إلى الخدمات المجمّعة في بيئة تشغيل الجيل التالي من Python 3
- مقارنة بين تطبيق الوحدة 0 (Python 2) وتطبيق الوحدة 1b (Python 3) جنبًا إلى جنب
- نماذج برامج تضمين كائنات WSGI لإطار عمل حزمة تطوير البرامج (SDK) لـ App Engine على الويب
- إتاحة خدمات App Engine المجمّعة في إطلاق الجيل التالي من بيئات التشغيل (2021)
المستندات العامة لـ App Engine
- مستندات App Engine
- وقت تشغيل Python 2 App Engine (بيئة عادية)
- استخدام المكتبات المضمَّنة في App Engine على Python 2 App Engine
- وقت تشغيل Python 3 App Engine (بيئة عادية)
- الاختلافات بين Python 2 3 بيئات تشغيل App Engine (بيئة عادية)
- دليل نقل البيانات من الإصدار 2 إلى 3 من App Engine (البيئة العادية)
- معلومات حول الأسعار والحصص في App Engine
- إطلاق الجيل الثاني من منصة App Engine (2018)
- إتاحة بيئات التشغيل القديمة على المدى الطويل
- مستودع نماذج نقل بيانات المستندات
- مستودع نماذج نقل البيانات التي يساهم بها المجتمع
معلومات أخرى عن السحابة الإلكترونية
- Python على Google Cloud Platform
- مكتبات برامج Google Cloud Python
- "المجانية دائمًا" في Google Cloud الفئة
- Google Cloud SDK (أداة سطر أوامر
gcloud
) - جميع مستندات Google Cloud
الفيديوهات
- محطة نقل بدون خادم
- الاستكشافات بدون خادم
- الاشتراك في Google Cloud Tech
- الاشتراك في Google Developers
الترخيص
هذا العمل مرخّص بموجب رخصة المشاع الإبداعي 2.0 مع نسب العمل إلى مؤلف عام.