تنظیمات پنل سرویس رایانش

در این مستند یاد می گیریم چطور از طریق پنل بکتوری سرویس رایانش، یک تابع تعریف کنیم، آن را فراخوانی کنیم، لاگ های آن را مشاهده کنیم و آن را مانیتور کنیم.

پیش‌نیازها

  1. در صورتی که با سرویس رایانش آشنایی ندارید، به معرفی سرویس رایانش مراجعه کنید.
  2. در صورتی که با برنامه‌نویسی به زبان NodeJs آشنایی ندارید، به آشنایی با NodeJs مراجعه کنید.

ساختن یک تابع

برای تعریف تابع، در پنل کاربری بکتوری، به سرویس رایانش مراجعه کنید و روی گزینه ایجاد تابع کلیک کنید.

Define Cloud Code Function

پارامترهایی که به هنگام تعریف تابع می توانید تنظیم کنید عبارتند از:

نام

عبارتی است از حروف و ارقام انگلیسی که تابعتان با آن شناخته می شود. نام تابع در هنگام فراخوانی تابع مورد استفاده قرار می گیرد.

توضیح

عبارتی است اختیاری که در آن می توانید توضیحاتی در مورد تابعتان بنویسید.

زمان‌بندی اجرا

یک عبارت کرون (Cron Expression) است که اجرای تابع را زمان‌بندی می‌کند. در صورتی که این فیلد را خالی بگذارید، هیچ زمان‌بندی‌ای برای اجرا در نظر گرفته نمی‌شود. هم‌چنین دقت داشته باشید که عبارات کرون در پنل بکتوری ۵ قسمتی و فاقد فیلد «ثانیه» می‌باشند. برای آشنایی با سینتکس عبارات کرون می‌توانید به این‌جا مراجعه کنید.

به عنوان مثال، عبارت

0/1 * ? * ?

مشخص می‌کند که این تابع باید سر هر دقیقه اجرا شود. به عنوان مثالی دیگر، عبارت

30 10 */2 * ?

نشان می‌دهد که این تابع باید رأس ساعت ۱۰:۳۰ و هر دو روز یک‌بار اجرا شود.

تایم اوت

میزان زمانی است که اجازه داده می‌شود که تابع طول کشیده و اجرا شود. اگر اجرای تابع بیشتر از زمانی که مشخص می کنید طول بکشد، سرویس رایانش به طور خودکار درخواست‌های جاری را kill می کند. برای مثال اگر این پارامتر را به عدد ۳۰۰ تنظیم کنید، هربار که تابع اجرا شود حتما باید در کمتر از ۳۰۰میلی‌ثانیه اتمام شود، در غیر اینصورت سرویس رایانش به شکل خودکار تابع را kill می‌کند.

توجه: حداقل مدت زمان برای تایم اوت ۱۰۰ms و حداکثر آن ۷۰۰۰ms می باشد.

زبان اجرا

از طریق این پارامتر می توانید مشخص کنید که کدهایتان به چه زبانی نوشته شود. سرویس رایانش بکتوری فعلا فقط از NodeJs پشتیبانی می کند و در نتیجه تنها مقدار قابل انتخاب برای این فیلد همان مقدار می باشد.

فایل

از طریق این پارامتر می توانید یک فایل زیپ حاوی فایل های مربوط به تابعتان را مشخص کنید، به عبارت دیگر می‌توانید در این بخش کدهای خود را آپلود کنید. هم چنین می توانید این پارامتر را خالی بگذارید و از طریق تب سورس کد در واسطه کاربری بکتوری کد هایتان را بنویسید. در این حالت نیز بکتوری یک فایل زیپ حاوی یک فایل به نام index.js برای سرور می فرستد که در کدهایی که در بخش سورس کد نوشتید قرار دارد.

هندلر

در این پارامتر شما مشخص می کنید که هر بار که یک درخواست فراخوانی برای اجرا این تابع می رسد، فراخوانی از کجا آغاز شود. برای مثال اگر این درون فایل زیپتان یک فایل به نام sampleModule.js دارید که درون آن تابعی به نام sampleFunction دارید، می بایست مقدار این پارامتر را برابر sampleModule.sampleFunction قرار دهید.
وقتی که شما هیچ فایل زیپی را از طریق پارامتر فایل ارسال نمی کنید، بکتوری کدی که در بخش “سورس کد” نوشته شده است را به عنوان کد شما در نظر می گیرد و یک فایل زیپ حاوی یک فایل به نام index.js که در آن کد مربوطه قرار داده شده است را برای سرور بکتوری ارسال می کند. بنابراین به صورت دیفالت مقدار پارامتر هندلر برابر مقدار index.handler می باشد که در آن handler نام تابعتان می باشد.
اگر فایل زیپی که آپلود می کنید دارای زیر پوشه باشد نیز مشکلی نیست و عباراتی از قبیل sampleFolder/sampleModule.sampleFunction نیز مقدار قابل قبولی برای هندلر می باشد که تفاوتش باحالت قبل این است که در آن فایل مربوط به هندلر درون زیر پوشه sampleFolder قرار دارد.

امکان فراخوانی ناشناس

اگر تیک مربوط به امکان فراخوانی ناشناس رابرای یک تابع بزنید، این تابع به صورت عمومی قابل دسترس می باشد و هر کسی که صرفا لینک مربوط به فراخوانی تابعتان را داشته باشد می تواند آن را اجرا کند(در ادامه نحوه‌ی دریافت لینک شرح داده خواهد شد). اما در حالتی که این گزینه انتخاب نشده باشد، فقط کاربران مربوط به این پروژه‌ی شما (که لاگین نیز کرده‌ باشند)، به این تابع دسترسی خواهند داشت.

حالا که با تنظیمات نحوه ساخت یک تابع در سرویس رایانش آشنا شدید، بیایید برای مثال یک تابع به نام ping بسازیم که وقتی فراخوانی می شود کلمه pong را بر گرداند. برای این کار کافیست پارامتر نام تابع را برابر مقدار ping بنویسید و کد زیر را در بخش سورس کد تعریف تابع قرار دهید. سایر پارامترها را دست نخورده باقی بگذارید و نیازی نیست تغییر دهید.

exports.handler = function(requestBody, context) {
	context.log("hello backtory");
	context.log(requestBody);
	context.succeed('pong');
};

حال در بخش تعریف تابع بر روی دکمه‌ی ایجاد کلیک کنید که تابع ایجاد شود.


در این کد، یک تابع به نام handler داریم که از طریق exports این امکان را دادیم که از بیرون ماژول قابلیت دسترسی به آن وجود داشته باشد. هر تابع مربوط به هندلر، دو ورودی به نام های requestBody و context دارد. پارامتر اول بدنه درخواست است که هنگام فراخوانی آن از طریق HTTP برای آن ارسال شده است. پارامتر دوم هم context می باشد که در آن اطلاعات و متد هایی مربوط به درخواستی که در حال اجراست وجود دارد. شما به واسطه متد context.log می توانید به ازای هر درخواست اجرا لاگ بزنید و از طریق context.succeed می توانید نتیجه اجرا را مشخص کنید. در مورد شیء context و متدهای آن به صورت مفصل در مدل برنامه نویسی توضیح داده شده است.

فراخوانی تابع از طریق پنل

هر تابعی که شما در سرویس رایانش بکتوری تعریف می کنید، به صورت Rest از طریق URL ای به شکل زیر قابل دسترس می باشد.

http://api.backtory.com/cloud-code/{Cloud-Code-Id}/{FunctionName}/

دقت کنید که آدرس بالا فقط به صورت متد POST قابل دسترس است و در صورت استفاده از GET خطایی دریافت خواهید کرد.

در صورت نیاز به آشنایی با مفاهیم REST به مستند REST بکتوری مراجعه کنید.

شما هم چنین می توانید توابعتان را از طریق پنل اجرا کنید. برای این کار یکی از توابع را از پنل بکتوری انتخاب کنید و تب مربوط به “تست” را انتخاب کنید. سپس در آن جا بر روی لینک اجرا کلیک کنید. با اجرای تابع شما می توانید نتیجه اجرا و لاگ هایی که در طول اجرای این درخواست اجرا شده است را در بخش های مربوط بهResult و Logs در پایین لینک اجرا مشاهده کنید.

Test Cloud Code Function

مانیتورینگ و مشاهده لاگ های اخیر

از طریق پنل بکتوری این امکان وجود دارد که لاگ مربوط به۲۰ درخواست اجرای اخیر را مشاهده کنید. که از تب مربوط به “مشاهده Log” قابل دسترسی است.

Logs of Cloud Code Function

هم چنین از طریق تب “مانیتورینگ” ببینید که در ۳۰ دقیقه اخیر به صورت تفکیکی چه تعداد درخواست اجرا در هر دقیقه داشتید و چه میزان اجرای آن ها طول کشیده است.

Monitoring of Cloud Code Function

گام بعدی