شروع کار با توابع Cloud Run (HTTP)

۱. مقدمه

نمای کلی

توابع Cloud Run روشی جدید برای استقرار بارهای کاری با استفاده از الگوهای رویدادگذاری GCF و امضای تابع است. به جای استفاده از فرآیند ساخت و پیکربندی‌های استقرار دلخواه ما، توابع Cloud Run به شما امکان کنترل مستقیم بر سرویس زیربنایی ایجاد شده در Cloud Run را می‌دهد.

با قابلیت‌های Cloud Run، ما تجربه کاربری ساده‌ای از پیاده‌سازی منبع Cloud Run را ارائه می‌دهیم و به توسعه‌دهندگان کنترل کاملی بر حجم کاری خود با استفاده از پیکربندی‌های Cloud Run می‌دهیم.

این آزمایشگاه کد در مثال‌های زیر از نمونه‌های nodejs استفاده می‌کند. با این حال، شما می‌توانید از نمونه‌های کد نسل دوم Cloud Functions به زبان دلخواه خود استفاده کنید:

آنچه یاد خواهید گرفت

  • نحوه استقرار یک تابع Cloud Run که توسط یک درخواست HTTP فعال می‌شود

۲. تنظیم متغیرهای محیطی و فعال کردن APIها

ارتقاء رابط خط فرمان gcloud

ابتدا، باید آخرین نسخه از رابط خط فرمان gcloud را نصب کنید. می‌توانید با اجرای دستور زیر، رابط خط فرمان را به‌روزرسانی کنید:

gcloud components update

متغیرهای محیطی را تنظیم کنید

شما می‌توانید متغیرهای محیطی که در سراسر این آزمایشگاه کد استفاده خواهند شد را تنظیم کنید.

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=<YOUR_REGION, e.g. us-central1>

gcloud config set project $PROJECT_ID
SERVICE_NAME=crf-http-codelab

فعال کردن APIها

قبل از اینکه بتوانید از این codelab استفاده کنید، باید چندین API را فعال کنید. این codelab به استفاده از APIهای زیر نیاز دارد. می‌توانید با اجرای دستور زیر این APIها را فعال کنید:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com

۳. یک تابع HTTP ایجاد کنید

ابتدا، یک دایرکتوری برای کد منبع ایجاد کنید و با دستور cd به آن دایرکتوری بروید.

mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_

سپس، یک فایل package.json با محتوای زیر ایجاد کنید:

{
    "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
    }
}

سپس، یک فایل index.js با محتوای زیر ایجاد کنید:

const functions = require("@google-cloud/functions-framework");

functions.http("helloHttp", (req, res) => {
    res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});

۴. تابع را مستقر کنید

اکنون می‌توانید با اجرای دستور زیر، تابع Cloud Run را مستقر کنید:

gcloud beta run deploy $SERVICE_NAME \
      --source . \
      --function helloHttp \
      --region us-central1 \
      --no-allow-unauthenticated

این دستور از buildpacks برای تبدیل کد منبع تابع شما به یک تصویر کانتینر آماده برای تولید استفاده می‌کند.

لطفا به موارد زیر توجه کنید:

  • از فلگ –source برای اعلام به Cloud Run جهت ساخت تابع در یک سرویس مبتنی بر کانتینر قابل اجرا استفاده می‌شود.
  • پرچم –function (new) برای تنظیم نقطه ورودی سرویس جدید به عنوان امضای تابعی که می‌خواهید فراخوانی شود، استفاده می‌شود.
  • (اختیاری) گزینه‌ی –no-allow-unauthenticated برای جلوگیری از فراخوانی عمومی تابع شما

۵. تابع را آزمایش کنید

پس از اتمام استقرار، URL سرویس را مشاهده خواهید کرد. برای فراخوانی تابع، باید یک درخواست احراز هویت شده با توکن هویت خود یا توکن هویت اصلی که نقش فراخوانی کننده Cloud Run را دارد، ارسال کنید، همانطور که در زیر نشان داده شده است:

# get the Service URL
SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')"

# invoke the service
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

۶. تبریک می‌گویم!

تبریک می‌گویم که آزمایشگاه کد را تمام کردید!

توصیه می‌کنیم مستندات مربوط به توابع Cloud Run را بررسی کنید.

آنچه ما پوشش داده‌ایم

  • نحوه استقرار یک تابع Cloud Run که توسط یک درخواست HTTP فعال می‌شود

۷. تمیز کردن

برای جلوگیری از هزینه‌های ناخواسته، (برای مثال، اگر سرویس‌های Cloud Run سهواً بیشتر از تخصیص فراخوانی ماهانه Cloud Run شما در سطح رایگان فراخوانی شوند)، می‌توانید Cloud Run یا پروژه‌ای را که در مرحله 2 ایجاد کرده‌اید، حذف کنید.

برای حذف عملکرد Cloud Run، به کنسول Cloud Run در آدرس https://console.cloud.google.com/run بروید و سرویس crf-http-codelab را حذف کنید.

اگر تصمیم به حذف کل پروژه دارید، می‌توانید به آدرس https://console.cloud.google.com/cloud-resource-manager بروید، پروژه‌ای را که در مرحله ۲ ایجاد کرده‌اید انتخاب کنید و گزینه Delete را انتخاب کنید. اگر پروژه را حذف کنید، باید پروژه‌ها را در Cloud SDK خود تغییر دهید. می‌توانید با اجرای gcloud projects list لیست تمام پروژه‌های موجود را مشاهده کنید.