۱. مرور کلی
مجموعه آزمایشگاههای کد Serverless Migration Station (آموزشهای عملی و خودآموز) و ویدیوهای مرتبط با آن ، با هدف کمک به توسعهدهندگان Google Cloud serverless برای مدرنسازی برنامههایشان، با راهنمایی آنها در طول یک یا چند مهاجرت، و در درجه اول دور شدن از سرویسهای قدیمی، ارائه میشوند. انجام این کار، برنامههای شما را قابل حملتر میکند و گزینهها و انعطافپذیری بیشتری به شما میدهد و شما را قادر میسازد تا با طیف وسیعتری از محصولات Cloud ادغام شده و به آنها دسترسی داشته باشید و به راحتی به نسخههای جدیدتر زبان ارتقا دهید. در حالی که در ابتدا بر روی اولین کاربران Cloud، در درجه اول توسعهدهندگان App Engine (محیط استاندارد)، تمرکز دارد، این مجموعه به اندازه کافی گسترده است که شامل سایر پلتفرمهای serverless مانند Cloud Functions و Cloud Run یا در صورت لزوم، هر جای دیگری نیز میشود.
پیش از این، توسعهدهندگان ملزم بودند قبل از اینکه بتوانند نسخههای زبان را ارتقا دهند، از «سرویسهای بستهبندیشده» قدیمی App Engine مانند Datastore و Memcache مهاجرت کنند، دو تلاش بالقوه چالشبرانگیز که پشت سر هم انجام میشدند. با در دسترس قرار دادن بسیاری از سرویسهای بستهبندیشده کلیدی در سرویس نسل دوم App Engine، توسعهدهندگان اکنون میتوانند برنامههای خود را به جدیدترین زمانهای اجرا منتقل کنند و در عین حال به استفاده از (بیشتر) سرویسهای بستهبندیشده ادامه دهند. این آزمایشگاه کد، شما را در ارتقاء یک برنامه نمونه از پایتون ۲ به ۳ راهنمایی میکند و در عین حال استفاده از سرویس بستهبندیشده Datastore (از طریق کتابخانه App Engine NDB) را حفظ میکند. استفاده از اکثر سرویسهای بستهبندیشده فقط نیاز به بهروزرسانی جزئی در کد دارد که در این آموزش به آن پرداخته خواهد شد، اما موارد دیگری نیز وجود دارند که نیاز به تغییرات گستردهتری دارند. این موارد توسط «بخش ۲»، یک ماژول تکمیلی و آزمایشگاه کد، پوشش داده خواهند شد.
یاد خواهید گرفت که چگونه
- انتقال نمونه برنامه App Engine از پایتون ۲ به ۳
- پیکربندی برنامه را بهروزرسانی کنید تا شامل SDK موتور برنامه (App Engine SDK) شود.
- کد SDK را به برنامه اضافه کنید که از سرویسهای همراه در زمانهای اجرای نسل دوم مانند پایتون ۳ پشتیبانی میکند.
آنچه نیاز دارید
- یک پروژه Google Cloud با یک حساب پرداخت GCP فعال
- مهارتهای پایه پایتون
- آشنایی کامل با دستورات رایج لینوکس
- دانش پایه در توسعه و استقرار برنامههای App Engine
- یک برنامهی ماژول ۱ موتور برنامه ( کد آزمایشگاه آن را تکمیل کنید [توصیه میشود] یا برنامه را از مخزن کپی کنید)
نظرسنجی
چگونه از این آموزش استفاده خواهید کرد؟
تجربه خود را با پایتون چگونه ارزیابی میکنید؟
تجربه خود را در استفاده از خدمات ابری گوگل چگونه ارزیابی میکنید؟
۲. پیشینه
سرویس اصلی App Engine در سال ۲۰۰۸ راهاندازی شد و با مجموعهای از APIهای قدیمی (که اکنون به عنوان سرویسهای همراه شناخته میشوند) ارائه شد تا ساخت و استقرار برنامههای کاربردی در سطح جهانی را برای توسعهدهندگان راحت کند. این سرویسها شامل Datastore، Memcache و Task Queue میشوند. در حالی که این سرویسها راحت بودند، کاربران هنگام استفاده از APIهای اختصاصی که آنها را به App Engine متصل میکرد، نگران قابلیت حمل برنامههای خود بودند و میخواستند برنامههایشان قابل حملتر باشند. این موضوع با این واقعیت همراه بود که بسیاری از این سرویسهای همراه که به محصولات ابری مستقل خود تبدیل میشدند، به بلوغ رسیده بودند و تیم App Engine را بر آن داشت تا پلتفرم نسل بعدی را در سال ۲۰۱۸ بدون آنها راهاندازی کند .
با نگاهی سریع به امروز، توسعهدهندگان پایتون ۲ مشتاق ارتقا به پایتون ۳ هستند. یک برنامه ۲.x که از سرویسهای همراه استفاده میکرد، قبل از اینکه بتواند برنامههایش را به ۳.x منتقل کند، نیاز به مهاجرت از آن سرویسها داشت که نشاندهنده دو مهاجرت اجباری پشت سر هم و بالقوه چالشبرانگیز بود. برای کمک به این انتقال، تیم App Engine در پاییز ۲۰۲۱ یک "کرمچاله" به گذشته معرفی کرد که به برنامههایی که روی runtimeهای نسل بعدی اجرا میشوند، اجازه میدهد به بسیاری از آن سرویسهای همراه دسترسی داشته باشند. اگرچه این نسخه شامل تمام سرویسهای موجود در runtimeهای اصلی نمیشود، اما بازیگران اصلی مانند Datastore، Task Queue و Memcache در دسترس هستند .
این آزمایشگاه کد، تغییرات لازم برای ارتقاء برنامه شما به پایتون ۳ را نشان میدهد، در حالی که استفاده از سرویسهای همراه را حفظ میکند. هدف این است که برنامههای شما در آخرین زمانهای اجرا اجرا شوند و به شما این امکان را بدهند که سپس از سرویسهای همراه به معادلهای مستقل ابری یا جایگزینهای شخص ثالث در جدول زمانی خودتان مهاجرت کنید، نه اینکه مانعی برای ارتقاء به نسخه ۳.x باشد. در حالی که مهاجرت از سرویسهای همراه دیگر لازم نیست، انجام این کار قابلیت حمل و انعطافپذیری بیشتری را از نظر محل میزبانی برنامههای شما، از جمله انتقال به پلتفرمهایی که ممکن است بار کاری شما را بهتر تأمین کنند، یا صرفاً ماندن در App Engine در حین ارتقاء به یک نسخه زبان مدرنتر، همانطور که توضیح داده شد، به شما میدهد.
برنامه نمونه ماژول ۱ پایتون ۲ از سرویس همراه Datastore از طریق App Engine NDB استفاده میکند. این برنامه قبلاً فریمورکها را از webapp2 به Flask منتقل کرده است - که در آزمایشگاه کد ماژول ۱ تکمیل شده است - اما استفاده از Datastore آن دست نخورده باقی مانده است.
این آموزش شامل مراحل زیر است:
- راهاندازی/پیشپردازش
- پیکربندی را بهروزرسانی کنید
- اصلاح کد برنامه
۳. تنظیمات/پیشپردازش
این بخش توضیح میدهد که چگونه:
- پروژه ابری خود را راهاندازی کنید
- دریافت برنامه نمونه پایه
- (دوباره)استقرار و اعتبارسنجی برنامه پایه
این مراحل تضمین میکنند که شما با کدی کارامد شروع میکنید.
۱. پروژه راهاندازی
اگر ماژول ۱ codelab را تکمیل کردهاید، توصیه میکنیم از همان پروژه (و کد) دوباره استفاده کنید. به عنوان یک جایگزین، یک پروژه ابری کاملاً جدید ایجاد کنید یا از یک پروژه موجود دیگر دوباره استفاده کنید. مطمئن شوید که پروژه دارای یک حساب صورتحساب فعال است که سرویس App Engine در آن فعال شده است.
۲. نمونه برنامه پایه را دریافت کنید
یکی از پیشنیازهای این آزمایشگاه کد، داشتن یک برنامه ماژول ۱ App Engine است: آزمایشگاه کد ماژول ۱ (توصیه میشود) را تکمیل کنید یا برنامه ماژول ۱ را از مخزن کپی کنید. چه از کد خودتان استفاده کنید و چه از کد ما، کد ماژول ۱ جایی است که ما "شروع" میکنیم. این آزمایشگاه کد شما را در هر مرحله راهنمایی میکند و با کدی که شبیه کد موجود در پوشه مخزن ماژول ۷ "FINISH" است، به پایان میرساند.
- شروع: پوشه ماژول ۱ (پایتون ۲)
- پایان: پوشه ماژول ۱ب (پایتون ۳)
- کل مخزن (برای کلون کردن یا دانلود فایل زیپ )
صرف نظر از اینکه از کدام برنامه ماژول ۱ استفاده میکنید، پوشه باید مانند زیر باشد، احتمالاً شامل یک پوشه lib نیز خواهد بود:
$ ls README.md appengine_config.py requirements.txt app.yaml main.py templates
۳. (دوباره) استقرار برنامه پایه
برای (دوباره) استقرار برنامه ماژول ۱، مراحل زیر را اجرا کنید:
- اگر پوشه
libوجود دارد، آن را حذف کنید وpip install -t lib -r requirements.txtرا برای پر کردن مجددlibاجرا کنید. اگر پایتون ۲ و ۳ را نصب کردهاید، ممکن است لازم باشد از دستورpip2استفاده کنید. - مطمئن شوید که ابزار خط فرمان
gcloudرا نصب و راهاندازی اولیه کردهاید و نحوهی استفاده از آن را بررسی کردهاید. - اگر نمیخواهید
PROJECT_IDخود را با هر دستورgcloudوارد کنید، پروژه Cloud خود را باgcloud config set projectPROJECT_IDتنظیم کنید. - برنامه نمونه را با
gcloud app deployمستقر کنید - تأیید کنید که برنامه ماژول ۱ طبق انتظار و بدون مشکل در نمایش آخرین بازدیدها اجرا میشود (در زیر نشان داده شده است)

۴. بهروزرسانی پیکربندی
وقتی این مراحل را با موفقیت انجام دادید و دیدید که برنامه وب شما کار میکند، آمادهاید تا این برنامه را به پایتون ۳ منتقل کنید، و با پیکربندی شروع کنید.
اضافه کردن SDK به requirements.txt
زمان اجرای App Engine Python 3 به طور قابل توجهی سربار استفاده از کتابخانههای شخص ثالث را کاهش میدهد. تنها کاری که لازم است انجام دهید این است که آنها را در requirements.txt فهرست کنید. برای استفاده از سرویسهای همراه در پایتون ۳، بسته App Engine SDK، appengine-python-standard را به آن اضافه کنید. بسته SDK از ماژول ۱ به Flask متصل میشود:
flask
appengine-python-standard
بهروزرسانی app.yaml
برای اعمال تغییرات پیکربندی در فایل app.yaml خود، مراحل زیر را دنبال کنید:
- دستورالعمل
runtimeرا با نسخه پشتیبانیشده پایتون ۳ جایگزین کنید؛ برای مثال، برای پایتون ۳.۱۰،python310را مشخص کنید. - هر دو دستورالعمل
threadsafeوapi_versionرا حذف کنید زیرا هیچکدام در پایتون ۳ استفاده نمیشوند. - بخش
handlersرا کاملاً حذف کنید زیرا این برنامه فقط دارای script handlers است. اگر برنامه شما file handlers استاتیک دارد، آنها را درhandlersدست نخورده باقی بگذارید. - محیط اجرای پایتون ۳ برخلاف محیط اجرای پایتون ۲ ، از کتابخانههای داخلی شخص ثالث پشتیبانی نمیکند. اگر برنامه شما بخش
librariesرا درapp.yamlدارد، کل بخش را حذف کنید. (بستههای مورد نیاز فقط باید درrequirements.txtمانند کتابخانههای غیر داخلی فهرست شوند.) برنامه نمونه ما بخشlibrariesرا ندارد، بنابراین به مرحله بعدی بروید. - برای استفاده از آن، یک دستورالعمل
app_engine_apisایجاد کنید که رویtrueتنظیم شده باشد - این با اضافه کردن بسته App Engine SDK به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را حذف کنید
این تمام تغییرات پیکربندی لازم را به پایان میرساند.
۵. کد برنامه را تغییر دهید
دسترسی به اکثر سرویسهای موجود در محیط زمان اجرای پایتون ۳ نیازمند یک قطعه کد کوتاه است که شیء برنامه رابط دروازه وب سرور (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-wrapping برای سایر فریمورکهای پایتون، به مستندات مراجعه کنید.
اگرچه این مثال برای دسترسی برنامه شما به اکثر سرویسهای همراه در پایتون ۳ کار میکند، اما موارد دیگری مانند Blobstore و Mail به کد اضافی نیاز دارند. ما این نمونهها را در یک ماژول مهاجرت دیگر پوشش خواهیم داد.
این پایان تمام تغییرات لازم برای افزودن استفاده از سرویسهای همراه App Engine به برنامه نمونه ماژول ۱ است. این برنامه از قبل با پایتون ۲ و ۳ سازگار است، بنابراین هیچ تغییر اضافی برای انتقال آن به پایتون ۳ به جز آنچه قبلاً در پیکربندی انجام دادهاید، وجود ندارد. مرحله آخر: این برنامه اصلاحشده را در زمان اجرای نسل بعدی App Engine Python 3 مستقر کنید و تأیید کنید که بهروزرسانیها با موفقیت انجام شدهاند.
۶. خلاصه/پاکسازی
این بخش، این آزمایشگاه کد را با استقرار برنامه، تأیید عملکرد آن طبق برنامه و در هر خروجی منعکسشده، به پایان میرساند. پس از اعتبارسنجی برنامه، هرگونه پاکسازی را انجام داده و مراحل بعدی را در نظر بگیرید.
استقرار و تأیید برنامه
برنامه پایتون ۳ را با gcloud app deploy مستقر کنید و تأیید کنید که برنامه مانند پایتون ۲ کار میکند. هیچ یک از عملکردها تغییر نمیکند، بنابراین خروجی باید با برنامه ماژول ۱ یکسان باشد:

یادداشتهای پایانی
- آنچه را که دارید با آنچه در پوشه ماژول ۱ب است مقایسه کنید (پایان). اگر در طول مسیر اشتباه کردید، در صورت لزوم آن را اصلاح کنید.
- اگر برنامه شما هنوز از
webapp2استفاده میکند، ماژول 0main.pyرا در کنار ماژول 1bmain.pyدر این صفحه مقایسه کنید، سپس codelab ماژول 1 را انجام دهید تا نحوه مهاجرت ازwebapp2به Flask را بیاموزید.
تبریک میگویم که اولین قدم را برای انتقال برنامههای Python 2 App Engine خود به Python 3 برداشتید، در حالی که در حال حاضر میتوانید از سرویسهای همراه آنها استفاده کنید.
تمیز کردن
عمومی
اگر فعلاً کارتان تمام است، توصیه میکنیم برنامه App Engine خود را غیرفعال کنید تا از پرداخت هزینه جلوگیری شود. با این حال، اگر میخواهید بیشتر آزمایش یا تجربه کنید، پلتفرم App Engine سهمیه رایگان دارد و بنابراین تا زمانی که از آن سطح استفاده تجاوز نکنید، نباید هزینهای از شما دریافت شود. این هزینه برای محاسبات است، اما ممکن است برای سرویسهای مربوطه App Engine نیز هزینههایی وجود داشته باشد، بنابراین برای اطلاعات بیشتر به صفحه قیمتگذاری آن مراجعه کنید. اگر این مهاجرت شامل سایر سرویسهای ابری باشد، هزینه آنها جداگانه محاسبه میشود. در هر صورت، در صورت لزوم، به بخش "ویژه این codelab" در زیر مراجعه کنید.
برای روشن شدن کامل موضوع، استقرار در یک پلتفرم محاسباتی بدون سرور 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*ation شما بستگی دارند، برای مثال، اگر برنامه شما در ایالات متحده میزبانی میشود، "us" خواهد بود.
از طرف دیگر، اگر قصد ندارید با این برنامه یا سایر آزمایشگاههای کد مهاجرت مرتبط ادامه دهید و میخواهید همه چیز را به طور کامل حذف کنید، پروژه خود را ببندید .
مخصوص این آزمایشگاه کد
سرویسهای ذکر شده در زیر مختص این codelab هستند. برای اطلاعات بیشتر به مستندات هر محصول مراجعه کنید:
- سرویس App Engine Datastore توسط Cloud Datastore (Cloud Firestore در حالت Datastore) ارائه میشود که یک نسخه رایگان نیز دارد؛ برای اطلاعات بیشتر به صفحه قیمتگذاری آن مراجعه کنید.
مراحل بعدی
از اینجا به بعد چندین مسیر وجود دارد:
- بهروزرسانی کد با استفاده از سرویسهای همراه که نیاز به تغییرات کد بیشتری دارند
- مهاجرت از سرویسهای همراه به محصولات مستقل ابری
- مهاجرت از App Engine به یک پلتفرم Cloud بدون سرور دیگر
دسترسی به سایر سرویسهای همراه مانند Blobstore ، Mail و Deferred نیاز به تغییرات کد بیشتری دارد. ماژولهای مهاجرتی که بر فاصله گرفتن از سرویسهای همراه قدیمی App Engine تمرکز دارند، عبارتند از:
- ماژول 2 : اتصال NDB از موتور برنامه به NDB ابری
- ماژولهای ۷-۹ : صف وظایف موتور برنامه (ارسال وظایف) به وظایف ابری
- ماژولهای ۱۲-۱۳ : حافظه موقت موتور برنامه به حافظه ابری
- ماژولهای ۱۵-۱۶ : موتور برنامه از Blobstore به فضای ذخیرهسازی ابری
- ماژولهای ۱۸-۱۹ : صف وظایف موتور برنامه (واکشی وظایف) به Cloud Pub/Sub
App Engine دیگر تنها پلتفرم بدون سرور در Google Cloud نیست. اگر یک برنامه کوچک App Engine یا برنامهای با قابلیتهای محدود دارید و میخواهید آن را به یک میکروسرویس مستقل تبدیل کنید، یا میخواهید یک برنامه یکپارچه را به چندین مؤلفه قابل استفاده مجدد تقسیم کنید، اینها دلایل خوبی برای در نظر گرفتن انتقال به Cloud Functions هستند. اگر کانتینرسازی به بخشی از گردش کار توسعه برنامه شما تبدیل شده است، به خصوص اگر شامل یک خط لوله CI/CD (ادغام مداوم/تحویل مداوم یا استقرار) باشد، مهاجرت به Cloud Run را در نظر بگیرید. این سناریوها توسط ماژولهای زیر پوشش داده میشوند:
- مهاجرت از موتور برنامه به توابع ابری: به ماژول 11 مراجعه کنید
- مهاجرت از App Engine به Cloud Run: برای کانتینرایز کردن برنامه خود با Docker به ماژول ۴ و برای انجام این کار بدون کانتینرها، دانش Docker یا
Dockerfileها به ماژول ۵ مراجعه کنید.
تغییر به یک پلتفرم بدون سرور دیگر اختیاری است و توصیه میکنیم قبل از ایجاد هرگونه تغییر، بهترین گزینهها را برای برنامهها و موارد استفاده خود در نظر بگیرید.
صرف نظر از اینکه کدام ماژول مهاجرت را در مرحله بعد در نظر بگیرید، تمام محتوای Serverless Migration Station (آزمایشگاههای کد، ویدیوها، کد منبع [در صورت وجود]) در مخزن متنباز آن قابل دسترسی است. README این مخزن همچنین راهنماییهایی در مورد اینکه کدام مهاجرتها را باید در نظر گرفت و هرگونه «ترتیب» مربوط به ماژولهای مهاجرت ارائه میدهد.
۷. منابع اضافی
در زیر منابع بیشتری برای توسعهدهندگان جهت بررسی بیشتر این ماژول مهاجرت یا ماژولهای مرتبط و همچنین محصولات مرتبط فهرست شده است. این منابع شامل مکانهایی برای ارائه بازخورد در مورد این محتوا، لینکهایی به کد و مستندات مختلفی است که ممکن است برای شما مفید باشند.
مشکلات/بازخوردهای Codelab
اگر در این آزمایشگاه کد مشکلی پیدا کردید، لطفاً قبل از ثبت، ابتدا مشکل خود را جستجو کنید. لینکهای جستجو و ایجاد مشکلات جدید:
منابع مهاجرت
لینکهای پوشههای مخزن ماژول ۱ (START) و ماژول ۱b (FINISH) را میتوانید در جدول زیر پیدا کنید. همچنین میتوانید از مخزن تمام مهاجرتهای Codelab مربوط به App Engine به آنها دسترسی داشته باشید.
کدلب | پایتون ۲ | پایتون ۳ |
ناموجود | ||
ماژول ۱۷ (این آزمایشگاه کد) | ناموجود | کد (mod1b-flask) |
منابع آنلاین
در زیر منابع آنلاینی وجود دارد که ممکن است برای این آموزش مرتبط باشند:
سرویسهای همراه موتور برنامه
- دسترسی به سرویسهای همراه در زمان اجرای نسل بعدی پایتون ۳
- مقایسهی پهلو به پهلو برنامهی ماژول ۰ (پایتون ۲) در مقابل برنامهی ماژول ۱b (پایتون ۳)
- نمونههای بستهبندی شیء WSGI چارچوب وب SDK موتور برنامه
- پشتیبانی از سرویسهای همراه App Engine در زمانهای اجرای نسل بعدی (۲۰۲۱)
اسناد عمومی موتور برنامه
- مستندات موتور برنامه
- موتور برنامه پایتون ۲ (محیط استاندارد) در زمان اجرا
- استفاده از کتابخانههای داخلی App Engine در Python 2 App Engine
- موتور برنامه پایتون ۳ (محیط استاندارد) در زمان اجرا
- تفاوتهای بین زمانهای اجرای موتور برنامه پایتون ۲ و ۳ (محیط استاندارد)
- راهنمای مهاجرت موتور برنامه پایتون ۲ به ۳ (محیط استاندارد)
- اطلاعات قیمتگذاری و سهمیهبندی موتور برنامه
- راهاندازی پلتفرم نسل دوم App Engine (۲۰۱۸)
- پشتیبانی بلندمدت از رانتایمهای قدیمی
- مخزن نمونههای مهاجرت مستندات
- مخزن نمونههای مهاجرت ارائه شده توسط جامعه
سایر اطلاعات ابری
- پایتون در پلتفرم ابری گوگل
- کتابخانههای کلاینت پایتون گوگل کلود
- سطح «همیشه رایگان» گوگل کلود
- کیت توسعه نرمافزار گوگل کلود (ابزار خط فرمان
gcloud) - تمام مستندات گوگل کلود
ویدیوها
- ایستگاه مهاجرت بدون سرور
- سفرهای اکتشافی بدون سرور
- مشترک شدن در فناوری ابری گوگل
- مشترک شدن در توسعهدهندگان گوگل
مجوز
این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.