AlloyDB এর সাথে ক্লাউড রানে একটি জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন স্থাপন করুন

1. ওভারভিউ

ক্লাউড রান হল একটি সম্পূর্ণরূপে পরিচালিত সার্ভারহীন প্ল্যাটফর্ম যা আপনাকে HTTP অনুরোধের মাধ্যমে আবেদনযোগ্য স্টেটলেস কন্টেনার চালাতে সক্ষম করে। এই কোডল্যাবটি প্রদর্শন করবে কিভাবে ক্লাউড রানে একটি Node.js অ্যাপ্লিকেশনকে IAM প্রমাণীকরণ ব্যবহার করে একটি পরিষেবা অ্যাকাউন্টের সাথে AlloyDB এর সাথে নিরাপদে সংযুক্ত করতে হয়।

যা শিখবেন

এই ল্যাবে, আপনি শিখবেন কিভাবে:

  • একটি AlloyDB দৃষ্টান্ত তৈরি করুন ( ব্যক্তিগত পরিষেবা সংযোগ ব্যবহার করার জন্য কনফিগার করা হয়েছে)
  • ক্লাউড রানে একটি অ্যাপ্লিকেশন স্থাপন করুন যা আপনার AlloyDB উদাহরণের সাথে সংযোগ করে
  • আপনার অ্যাপ্লিকেশনে কার্যকারিতা যোগ করতে জেমিনি কোড সহায়তা ব্যবহার করুন

2. পূর্বশর্ত

  1. আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি Google অ্যাকাউন্ট তৈরি করতে হবে।
    • কাজের বা স্কুল অ্যাকাউন্টের পরিবর্তে একটি ব্যক্তিগত অ্যাকাউন্ট ব্যবহার করুন। কর্মক্ষেত্র এবং স্কুল অ্যাকাউন্টগুলিতে বিধিনিষেধ থাকতে পারে যা আপনাকে এই ল্যাবের জন্য প্রয়োজনীয় APIগুলি সক্ষম করতে বাধা দেয়৷

3. প্রকল্প সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন।
  2. ক্লাউড কনসোলে বিলিং সক্ষম করুন
    • এই ল্যাবটি সম্পূর্ণ করতে ক্লাউড সংস্থানগুলিতে $1 USD-এর কম খরচ হওয়া উচিত৷
    • আপনি আরও চার্জ এড়াতে সংস্থানগুলি মুছতে এই ল্যাবের শেষে পদক্ষেপগুলি অনুসরণ করতে পারেন৷
    • নতুন ব্যবহারকারীরা $300 USD ফ্রি ট্রায়ালের জন্য যোগ্য৷
  3. একটি নতুন প্রকল্প তৈরি করুন বা একটি বিদ্যমান প্রকল্প পুনরায় ব্যবহার করতে বেছে নিন।

4. ক্লাউড শেল এডিটর খুলুন

  1. ক্লাউড শেল এডিটরে নেভিগেট করুন
  2. যদি টার্মিনালটি স্ক্রিনের নীচে প্রদর্শিত না হয় তবে এটি খুলুন:
    • হ্যামবার্গার মেনুতে ক্লিক করুন হ্যামবার্গার মেনু আইকন
    • টার্মিনাল ক্লিক করুন
    • নতুন টার্মিনালে ক্লিক করুন ক্লাউড শেল এডিটরে নতুন টার্মিনাল খুলুন
  3. টার্মিনালে, এই কমান্ড দিয়ে আপনার প্রকল্প সেট করুন:
    • বিন্যাস:
      gcloud config set project [PROJECT_ID]
      
    • উদাহরণ:
      gcloud config set project lab-project-id-example
      
    • আপনি যদি আপনার প্রকল্প আইডি মনে করতে না পারেন:
      • আপনি আপনার সমস্ত প্রকল্প আইডি এর সাথে তালিকাভুক্ত করতে পারেন:
        gcloud projects list | awk '/PROJECT_ID/{print $2}'
        
      ক্লাউড শেল এডিটর টার্মিনালে প্রজেক্ট আইডি সেট করুন
  4. অনুমোদন করার জন্য অনুরোধ করা হলে, চালিয়ে যেতে অনুমোদন ক্লিক করুন। ক্লাউড শেল অনুমোদন করতে ক্লিক করুন
  5. আপনার এই বার্তাটি দেখতে হবে:
    Updated property [core/project].
    
    যদি আপনি একটি WARNING দেখতে পান এবং জিজ্ঞাসা করা হয় Do you want to continue (Y/N)? , তাহলে আপনি সম্ভবত প্রজেক্ট আইডি ভুলভাবে প্রবেশ করেছেন। N টিপুন, Enter টিপুন এবং আবার gcloud config set project কমান্ড চালানোর চেষ্টা করুন।

5. API সক্রিয় করুন

টার্মিনালে, APIs সক্ষম করুন:

gcloud services enable \
  compute.googleapis.com \
  alloydb.googleapis.com \
  run.googleapis.com \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  cloudaicompanion.googleapis.com

অনুমোদন করার জন্য অনুরোধ করা হলে, চালিয়ে যেতে অনুমোদন ক্লিক করুন। ক্লাউড শেল অনুমোদন করতে ক্লিক করুন

এই কমান্ডটি সম্পূর্ণ হতে কয়েক মিনিট সময় নিতে পারে, তবে এটি শেষ পর্যন্ত এটির মতো একটি সফল বার্তা তৈরি করবে:

Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.

6. একটি পরিষেবা অ্যাকাউন্ট সেট আপ করুন৷

ক্লাউড রান দ্বারা ব্যবহার করার জন্য একটি Google ক্লাউড পরিষেবা অ্যাকাউন্ট তৈরি এবং কনফিগার করুন যাতে এটি AlloyDB এর সাথে সংযোগ করার জন্য সঠিক অনুমতি পায়৷

  1. একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করতে নিম্নরূপ gcloud iam service-accounts create কমান্ড চালান:
    gcloud iam service-accounts create quickstart-service-account \
      --display-name="Quickstart Service Account"
    
  2. আপনি এইমাত্র তৈরি করা Google ক্লাউড পরিষেবা অ্যাকাউন্টে AlloyDB ডেটাবেস ব্যবহারকারীর ভূমিকা যুক্ত করার জন্য নিম্নোক্তভাবে gcloud প্রকল্পের add-iam-policy-binding কমান্ডটি চালান।
    gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
      --member="serviceAccount:quickstart-service-account@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
      --role="roles/alloydb.databaseUser"
    
  3. আপনি এইমাত্র তৈরি করা Google ক্লাউড পরিষেবা অ্যাকাউন্টে পরিষেবা ব্যবহার উপভোক্তা ভূমিকা যুক্ত করতে নিম্নরূপ gcloud প্রকল্পের অ্যাড-iam-policy-binding কমান্ডটি চালান৷
    gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
      --member="serviceAccount:quickstart-service-account@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
      --role="roles/serviceusage.serviceUsageConsumer"
    
  4. আপনি এইমাত্র তৈরি করা Google ক্লাউড পরিষেবা অ্যাকাউন্টে লগ রাইটার ভূমিকা যোগ করতে নিম্নরূপ gcloud প্রজেক্ট অ্যাড-iam-policy-binding কমান্ডটি চালান।
    gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
      --member="serviceAccount:quickstart-service-account@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
    

7. AlloyDB ইন্সট্যান্স তৈরি করুন

  1. ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করতে gcloud alloydb clusters create কমান্ড চালান
    gcloud alloydb clusters create quickstart-cluster \
      --password=$(openssl rand -base64 20) \
      --region=us-central1 \
      --project=${GOOGLE_CLOUD_PROJECT} \
      --enable-private-service-connect \
      --database-version=POSTGRES_16
    

এই কমান্ডটি সম্পূর্ণ হতে কয়েক মিনিট সময় লাগতে পারে।

  1. একটি ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করতে gcloud alloydb instances create কমান্ডটি চালান
    gcloud alloydb instances create quickstart-instance \
      --project=${GOOGLE_CLOUD_PROJECT} \
      --instance-type=PRIMARY \
      --cpu-count=2 \
      --region=us-central1 \
      --cluster=quickstart-cluster \
      --allowed-psc-projects=${GOOGLE_CLOUD_PROJECT} \
      --database-flags=alloydb.iam_authentication=on
    
  2. পিএসসি পরিষেবা সংযুক্তি লিঙ্ক পেতে gcloud alloydb instances describe কমান্ডটি চালান এবং এটি একটি পরিবর্তনশীলে রপ্তানি করুন
    export SERVICE_ATTACHMENT=$(gcloud alloydb instances describe quickstart-instance \
        --cluster=quickstart-cluster --region=us-central1 \
        --format="value(pscInstanceConfig.serviceAttachmentLink)")
    
  3. gcloud compute addresses create quickstart-address \
      --region=us-central1 \
      --subnet=default
    
  4. gcloud compute forwarding-rules create quickstart-endpoint \
      --region=us-central1 \
      --network=default \
      --address=quickstart-address \
      --target-service-attachment=${SERVICE_ATTACHMENT}
    

ডাটাবেস অ্যাক্সেস করার জন্য আপনি আগে তৈরি করা পরিষেবা অ্যাকাউন্টের জন্য একটি PostgreSQL ডাটাবেস ব্যবহারকারী তৈরি করুন।

gcloud alloydb users create quickstart-service-account@${GOOGLE_CLOUD_PROJECT}.iam \
  --cluster=quickstart-cluster \
  --region=us-central1 \
  --type=IAM_BASED \
  --superuser=true

8. আবেদন প্রস্তুত করুন

একটি Node.js অ্যাপ্লিকেশন প্রস্তুত করুন যা HTTP অনুরোধে সাড়া দেয়।

  1. ক্লাউড শেলে helloworld নামে একটি নতুন ডিরেক্টরি তৈরি করুন, তারপর সেই ডিরেক্টরিতে পরিবর্তন করুন:
    mkdir helloworld
    cd helloworld
    
  2. একটি মডিউল হিসাবে একটি package.json ফাইল শুরু করুন।
    npm init -y
    npm pkg set type="module"
    npm pkg set main="index.mjs"
    npm pkg set scripts.start="node index.mjs"
    
  3. Google Cloud Auth লাইব্রেরি ইনস্টল করুন।
    npm install google-auth-library
    
  4. PostgreSQL ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করতে pg ইনস্টল করুন।
    npm install pg
    
  5. ইনকামিং HTTP অনুরোধগুলি গ্রহণ করতে এক্সপ্রেস ইনস্টল করুন।
    npm install express
    
  6. অ্যাপ্লিকেশন কোড সহ একটি index.mjs ফাইল তৈরি করুন। এই কোড করতে সক্ষম:
    • HTTP অনুরোধ গ্রহণ করুন
    • ডাটাবেসের সাথে সংযোগ করুন
    • ডাটাবেসে HTTP অনুরোধের সময় সংরক্ষণ করুন
    • শেষ পাঁচটি অনুরোধের সময় ফেরত দিন
    ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
    cat > index.mjs << "EOF"
    import express from 'express';
    import pg from 'pg';
    const { Pool } = pg;
    import {GoogleAuth} from 'google-auth-library';
    
    const auth = new GoogleAuth({
      scopes: ['https://www.googleapis.com/auth/alloydb.login'],
    });
    
    const pool = new Pool({
      host: process.env.DB_HOST,
      user: process.env.DB_USER,
      password: async () => {
        return await auth.getAccessToken();
      },
      database: process.env.DB_NAME,
      ssl: {
        require: true,
        rejectUnauthorized: false, // required for self-signed certs
        // https://node-postgres.com/features/ssl#self-signed-cert
      }
    });
    
    const app = express();
    
    app.get('/', async (req, res) => {
      await pool.query('INSERT INTO visits(created_at) VALUES(NOW())');
      const {rows} = await pool.query('SELECT created_at FROM visits ORDER BY created_at DESC LIMIT 5');
      console.table(rows); // prints the last 5 visits
      res.send(rows);
    });
    
    const port = parseInt(process.env.PORT) || 8080;
    app.listen(port, async () => {
      console.log('process.env: ', process.env);
      await pool.query(`CREATE TABLE IF NOT EXISTS visits (
        id SERIAL NOT NULL,
        created_at timestamp NOT NULL,
        PRIMARY KEY (id)
      );`);
      console.log(`helloworld: listening on port ${port}`);
    });
    
    EOF
    

এই কোডটি একটি মৌলিক ওয়েব সার্ভার তৈরি করে যা পোর্ট পরিবেশ পরিবর্তনশীল দ্বারা সংজ্ঞায়িত পোর্টে শোনে। অ্যাপ্লিকেশন এখন স্থাপন করার জন্য প্রস্তুত.

9. ক্লাউড রান অ্যাপ্লিকেশন স্থাপন করুন

  1. আপনি যে ক্লাউড রান পরিষেবাটি তৈরি করতে চলেছেন তার জন্য ক্লাউড রান পরিষেবা অ্যাকাউন্টে নেটওয়ার্ক ব্যবহারকারীর ভূমিকা যুক্ত করতে নিম্নরূপ gcloud প্রকল্পের add-iam-policy-binding কমান্ডটি চালান৷
    gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
    --member "serviceAccount:service-$(gcloud projects describe ${GOOGLE_CLOUD_PROJECT} --format="value(projectNumber)")@serverless-robot-prod.iam.gserviceaccount.com" \
    --role "roles/compute.networkUser"
    
  1. ক্লাউড রানে আপনার অ্যাপ্লিকেশন স্থাপন করতে নীচের কমান্ডটি চালান:
    gcloud run deploy helloworld \
      --region=us-central1 \
      --source=. \
      --set-env-vars DB_NAME="quickstart_db" \
      --set-env-vars DB_USER="postgres" \
      --set-env-vars DB_PASSWORD=${DB_PASSWORD} \
      --set-env-vars DB_HOST="$(gcloud sql instances describe quickstart-instance --project=${GOOGLE_CLOUD_PROJECT} --format='value(settings.ipConfiguration.pscConfig.pscAutoConnections.ipAddress)')" \
      --service-account="quickstart-service-account@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com" \
      --network=default \
      --subnet=default \
      --allow-unauthenticated
    
  2. অনুরোধ করা হলে, আপনি চালিয়ে যেতে চান তা নিশ্চিত করতে Y এবং Enter টিপুন:
    Do you want to continue (Y/n)? Y
    

কয়েক মিনিট পরে, অ্যাপ্লিকেশনটি আপনাকে দেখার জন্য একটি URL প্রদান করবে।

আপনার অ্যাপ্লিকেশানটি কার্যকর দেখতে URL এ নেভিগেট করুন৷ প্রতিবার আপনি URL-এ যান বা পৃষ্ঠা রিফ্রেশ করেন, আপনি JSON হিসাবে পাঁচটি সাম্প্রতিক ভিজিট দেখতে পাবেন।

কয়েক মিনিট পরে, অ্যাপ্লিকেশনটি আপনাকে দেখার জন্য একটি URL প্রদান করবে।

আপনার অ্যাপ্লিকেশানটি কার্যকর দেখতে URL এ নেভিগেট করুন৷ প্রতিবার আপনি URL-এ যান বা পৃষ্ঠা রিফ্রেশ করেন, আপনি JSON হিসাবে পাঁচটি সাম্প্রতিক ভিজিট দেখতে পাবেন।

10. অভিনন্দন

এই ল্যাবে, আপনি শিখেছেন কিভাবে:

  • একটি AlloyDB দৃষ্টান্ত তৈরি করুন ( ব্যক্তিগত পরিষেবা সংযোগ ব্যবহার করার জন্য কনফিগার করা হয়েছে)
  • ক্লাউড রানে একটি অ্যাপ্লিকেশন স্থাপন করুন যা আপনার AlloyDB উদাহরণের সাথে সংযোগ করে
  • আপনার অ্যাপ্লিকেশনে কার্যকারিতা যোগ করতে জেমিনি কোড সহায়তা ব্যবহার করুন

পরিষ্কার করুন

এই টিউটোরিয়ালে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, হয় সংস্থানগুলি রয়েছে এমন প্রকল্পটি মুছুন, অথবা প্রকল্পটি রাখুন এবং পৃথক সংস্থানগুলি মুছুন৷ আপনি যদি পুরো প্রকল্পটি মুছতে চান, আপনি চালাতে পারেন:

gcloud projects delete ${GOOGLE_CLOUD_PROJECT}