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

1. সংক্ষিপ্ত বিবরণ

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

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

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

তুমি কি শিখবে

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

তোমার যা লাগবে

  • একটি গুগল ক্লাউড প্রকল্প
  • গুগল ক্রোম এর মতো একটি ব্রাউজার
  • স্ট্যান্ডার্ড লিনাক্স টেক্সট এডিটর, যেমন ভিম, ইম্যাকস এবং জিএনইউ ন্যানোর সাথে পরিচিতি।

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

কেবল পঠনযোগ্য অনুশীলনগুলি পড়ুন এবং সম্পূর্ণ করুন

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

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

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

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

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

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

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

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLpGtQd5Q55

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5 OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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

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

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

ক্লাউড শেল

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

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

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

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

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

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

ক্লাউড শেলের সাথে সংযোগ স্থাপন এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে।

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সকল ডেভেলপমেন্ট টুল রয়েছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি অফার করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার বেশিরভাগ কাজ, যদি সব না হয়, কেবল একটি ব্রাউজার বা আপনার 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].

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

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

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

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

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

Spring Initializr ব্যবহার করে একটি নতুন Spring Boot অ্যাপ তৈরি করতে কমান্ড লাইন ব্যবহার করে অ্যাপটি লেখা শুরু করুন:

$ 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 (Macintosh-এ Command+C ) দিয়ে এটি বন্ধ করুন।

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

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

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

ক্লাউড-এডিটর.পিএনজি

$ 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 (Macintosh-এ Command+C ) দিয়ে এটি বন্ধ করুন।

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

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

আপনাকে GcsController এ আরেকটি পদ্ধতি যোগ করতে হবে যা HTTP POST-এ সাড়া দেবে এবং ক্লাউড স্টোরেজে আপনার ফাইলে ডেটা লিখবে। এবার, Spring 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 (Macintosh-এ Command+C ) দিয়ে এটি বন্ধ করুন।

৭. অভিনন্দন!

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

আরও জানুন

লাইসেন্স

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