স্প্রিং রিসোর্স অ্যাবস্ট্রাকশন সহ ক্লাউড স্টোরেজে ফাইলগুলি অ্যাক্সেস করুন৷

1. ওভারভিউ

স্প্রিং ফ্রেমওয়ার্ক একটি ResourceLoader বিমূর্ততা প্রদান করে যাতে ফাইল সিস্টেম, ক্লাসপাথ বা ওয়েবের মতো বিভিন্ন উত্স থেকে ফাইলগুলি সহজেই পড়তে এবং লিখতে পারে। আপনাকে শুধুমাত্র সুপরিচিত প্রোটোকল উপসর্গ ব্যবহার করে সংস্থানে URI নির্দিষ্ট করতে হবে। উদাহরণস্বরূপ, স্থানীয় ফাইল সিস্টেমে একটি ফাইল অ্যাক্সেস করতে, আপনি file:/data/config.yaml এর মতো একটি URI উল্লেখ করবেন।

আপনি একটি স্প্রিং বুট অ্যাপ লিখবেন যা স্প্রিং রিসোর্স অ্যাবস্ট্রাকশন এবং gs: প্রোটোকল উপসর্গ ব্যবহার করে ক্লাউড স্টোরেজে সঞ্চিত ফাইলগুলি অ্যাক্সেস করবে।

আপনি ক্লাউড শেল এবং ক্লাউড SDK gcloud কমান্ড-লাইন টুল ব্যবহার করে এটি করবেন।

আপনি কি শিখবেন

  • ক্লাউড স্টোরেজ স্প্রিং বুট স্টার্টার কীভাবে ব্যবহার করবেন
  • বসন্তের সাথে ক্লাউড স্টোরেজে ফাইলগুলি কীভাবে অ্যাক্সেস করবেন
  • স্প্রিং এর Resource এবং WritableResource বিমূর্ততা কিভাবে ব্যবহার করবেন

আপনি কি প্রয়োজন হবে

  • একটি Google ক্লাউড প্রকল্প
  • একটি ব্রাউজার, যেমন Google Chrome
  • স্ট্যান্ডার্ড লিনাক্স টেক্সট এডিটর, যেমন Vim, Emacs, এবং GNU Nano এর সাথে পরিচিতি

আপনি কিভাবে কোডল্যাব ব্যবহার করবেন?

শুধু পড়ুন পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

এইচটিএমএল এবং সিএসএস ওয়েব অ্যাপ তৈরি করার ক্ষেত্রে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

আপনি Google ক্লাউড পরিষেবাগুলি ব্যবহার করার সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ (যদি আপনার ইতিমধ্যেই একটি Gmail বা G Suite অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY5Gv3GU Zw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLpGtQd5Q55

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3oK3o67gCu67jCGUJCGUX67j

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

মেঘের শেল

আপনি Cloud Shell ব্যবহার করবেন, Google ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0ZFZkWt2QLZWR5 dgUDQ .

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb- IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFGUXM2QUZQ4 2ecHrbzQ

আপনি যদি আগে কখনও ক্লাউড শেল শুরু না করে থাকেন, তাহলে আপনাকে একটি মধ্যবর্তী স্ক্রীন (ভাঁজের নীচে) উপস্থাপন করা হবে যা বর্ণনা করে। যদি এটি হয়, তবে চালিয়ে যান ক্লিক করুন (এবং আপনি এটি আর কখনও দেখতে পাবেন না)। এককালীন স্ক্রীনটি দেখতে কেমন তা এখানে রয়েছে:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoew65-fi2LJo4twUoew65-fi2LJo4twUoew6rq-13SUj

ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7OD6P1I47nz8vrAdK7yPgxyPvR8 hA

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, শুধুমাত্র একটি ব্রাউজার বা আপনার Chromebook দিয়ে করা যেতে পারে।

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকরণ করেছেন এবং প্রকল্পটি ইতিমধ্যে আপনার প্রকল্প আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

3. ক্লাউড স্টোরেজে একটি ফাইল তৈরি করুন

ক্লাউড শেল চালু হওয়ার পরে, আপনি ফাইল তৈরি করা এবং সেগুলিকে ক্লাউড স্টোরেজে স্থানান্তর করা শুরু করতে পারেন।

my-file.txt নামে একটি ফাইল তৈরি করুন:

$ echo "Hello World from GCS" > my-file.txt

তারপরে ক্লাউড স্টোরেজে একটি নতুন অনন্য বালতি তৈরি করুন এবং সেখানে gsutil ব্যবহার করে ফাইলটি স্থানান্তর করুন।

$ BUCKET=spring-bucket-$USER
$ gsutil makebucket gs://$BUCKET
$ gsutil copy my-file.txt gs://$BUCKET

ক্লাউড স্টোরেজের স্টোরেজ ব্রাউজারে নেভিগেট করুন এবং বালতি এবং ফাইল সেখানে আছে কিনা তা যাচাই করুন।

4. একটি স্প্রিং বুট অ্যাপ চালু করুন

স্প্রিং ইনিশিয়ালাইজারের সাথে একটি নতুন স্প্রিং বুট অ্যাপ তৈরি করতে কমান্ড লাইন ব্যবহার করে অ্যাপটি লেখা শুরু করুন:

$ curl https://start.spring.io/starter.tgz \
  -d type=maven-project \
  -d dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -

মনে রাখবেন যে Initializr স্বয়ংক্রিয়ভাবে টেমপ্লেট অ্যাপের pom.xml এ আপনার নির্ভরতাগুলিতে spring-boot-starter-web এবং spring-cloud-gcp-starter-storage যোগ করবে।

টেমপ্লেট অ্যাপের ডিরেক্টরিতে পরিবর্তন করুন:

$ cd spring-gcs

নিশ্চিত করুন যে JAVA_HOME সঠিক JDK সংস্করণে সেট করা আছে:

$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

Maven ব্যবহার করে অ্যাপটি তৈরি করুন এবং চালান।

$ ./mvnw spring-boot:run

অ্যাপটি পোর্ট 8080 এ শোনা শুরু করবে। একটি নতুন ক্লাউড শেল ট্যাব খুলুন এবং অ্যাপটি অ্যাক্সেস করতে curl চালান।

$ curl localhost:8080

আপনার একটি 404 প্রতিক্রিয়া পাওয়া উচিত কারণ অ্যাপটি এখনও কার্যকর কিছু করে না।

পূর্ববর্তী ক্লাউড শেল ট্যাবে ফিরে যান যেখানে অ্যাপটি চলছে এবং এটিকে Control+C (ম্যাকিন্টোশে Command+C ) দিয়ে মেরে ফেলুন।

5. ক্লাউড স্টোরেজে ফাইলটি পড়ুন

my-file.txt অ্যাক্সেস করতে আপনার স্প্রিং বুট অ্যাপটি পরিবর্তন করুন, যে ফাইলটি আপনি আগে ক্লাউড স্টোরেজে সংরক্ষণ করেছিলেন৷ আপনার লক্ষ্য হল HTTP এর মাধ্যমে ফাইলের বিষয়বস্তু ফেরত দেওয়া।

নিম্নলিখিত নির্দেশাবলীতে, আপনি ফাইলগুলি সম্পাদনা করতে Vim ব্যবহার করবেন, তবে আপনি Emacs, GNU Nano বা ক্লাউড শেলের অন্তর্নির্মিত কোড সম্পাদকও ব্যবহার করতে পারেন:

cloud-editor.png

$ cd ~/spring-gcs

অ্যাপে একটি REST কন্ট্রোলার GcsController যোগ করুন।

$ vi src/main/java/com/example/demo/GcsController.java

নিম্নলিখিত কোডটি পেস্ট করুন, এবং আপনার পূর্বে তৈরি করা বালতি দিয়ে সংস্থান URI ঠিক করতে ভুলবেন না। আপনি echo $BUCKET কমান্ড চালিয়ে বালতি পরীক্ষা করতে পারেন।

src/main/java/com/example/demo/GcsController.java

package com.example.demo;

import java.io.IOException;
import java.nio.charset.Charset;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GcsController {

  @Value("gs://REPLACE_WITH_YOUR_BUCKET/my-file.txt")
  private Resource gcsFile;

  @GetMapping("/")
  public String readGcsFile() throws IOException {
    return StreamUtils.copyToString(
        gcsFile.getInputStream(),
        Charset.defaultCharset());
  }
}

Maven এর সাথে অ্যাপটি তৈরি করুন এবং চালান:

$ ./mvnw spring-boot:run

অ্যাপটি পোর্ট 8080 এ শোনা শুরু করে। একটি নতুন ক্লাউড শেল ট্যাব খুলুন এবং অ্যাপটি অ্যাক্সেস করতে curl চালান।

$ curl localhost:8080

আপনার এখন দেখতে হবে যে ফাইলের বিষয়বস্তু অ্যাপ থেকে ফিরে এসেছে। পূর্ববর্তী ক্লাউড শেল ট্যাবে যান যেখানে অ্যাপটি চলছে এবং এটিকে Control+C (ম্যাকিনটোশে Command+C ) দিয়ে মেরে ফেলুন।

6. ক্লাউড স্টোরেজে ফাইলটিতে লিখুন

আপনি ক্লাউড স্টোরেজে ফাইলের বিষয়বস্তু পড়েছেন এবং এটি একটি স্প্রিং REST কন্ট্রোলারের মাধ্যমে প্রকাশ করেছেন। এখন, একই HTTP এন্ডপয়েন্টে নতুন ফাইলের বিষয়বস্তু পোস্ট করে ফাইলের বিষয়বস্তু পরিবর্তন করুন।

আপনাকে GcsController এ আরেকটি পদ্ধতি যোগ করতে হবে যা HTTP POST-এ সাড়া দেবে এবং ক্লাউড স্টোরেজে আপনার ফাইলে ডেটা লিখবে। এইবার, স্প্রিং Resource WritableResource এ কাস্ট করুন।

আপনার প্রয়োজনীয় অতিরিক্ত আমদানি সহ GcsController আপডেট করুন।

src/main/java/com/example/demo/GcsController.java

import java.io.OutputStream;
import org.springframework.core.io.WritableResource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PostMapping;

কন্ট্রোলারে নতুন এন্ডপয়েন্ট পদ্ধতি যোগ করুন।

src/main/java/com/example/demo/GcsController.java

@RestController
public class GcsController {

  @PostMapping("/")
  String writeGcs(@RequestBody String data) throws IOException {
    try (OutputStream os = ((WritableResource) gcsFile).getOutputStream()) {
      os.write(data.getBytes());
    }
    return "file was updated\n";
  }
  ...
}

Maven এর সাথে অ্যাপটি তৈরি করুন এবং চালান:

$ ./mvnw spring-boot:run

অ্যাপটি পোর্ট 8080 এ শোনা শুরু করে। একটি নতুন ক্লাউড শেল ট্যাব খুলুন এবং অ্যাপে একটি বার্তা পোস্ট করতে curl চালান।

$ curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080

আপনি একটি নিশ্চিতকরণ দেখতে হবে যে ফাইলের বিষয়বস্তু আপডেট করা হয়েছে। যাইহোক, একটি GET করে তা যাচাই করুন।

$ curl localhost:8080

আপনি অ্যাপ থেকে ফিরে আসা ফাইলের আপডেট বিষয়বস্তু দেখতে হবে. পূর্ববর্তী ক্লাউড শেল ট্যাবে ফিরে যান যেখানে অ্যাপটি চলছে এবং এটিকে Control+C (ম্যাকিন্টোশে Command+C ) দিয়ে মেরে ফেলুন।

7. অভিনন্দন!

আপনি ক্লাউড স্টোরেজে সহজেই ফাইল অ্যাক্সেস করতে স্প্রিং রিসোর্স অ্যাবস্ট্রাকশন ব্যবহার করতে শিখেছেন। আপনি একটি স্প্রিং বুট ওয়েব অ্যাপ লিখেছেন যা ক্লাউড স্টোরেজের একটি ফাইল পড়তে এবং লিখতে পারে। আপনি ক্লাউড স্টোরেজের জন্য স্প্রিং বুট স্টার্টার সম্পর্কেও শিখেছেন যা সেই কার্যকারিতা সক্ষম করে।

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।