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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে (Gmail বা Google Apps), তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে। Google ক্লাউড প্ল্যাটফর্ম কনসোলে সাইন-ইন করুন ( console.cloud.google.com ) এবং একটি নতুন প্রকল্প তৈরি করুন:

2016-02-10 12:45:26.png এর স্ক্রিনশট

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

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

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

Google ক্লাউড প্ল্যাটফর্মের নতুন ব্যবহারকারীরা $300 বিনামূল্যের ট্রায়ালের জন্য যোগ্য৷

মেঘের শেল

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

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

GCP কনসোল থেকে উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

তারপর "স্টার্ট ক্লাউড শেল" ক্লিক করুন:

পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে:

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

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

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

gcloud auth list

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

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
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

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

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

$ curl https://start.spring.io/starter.tgz \
-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

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

$ ./mvnw spring-boot:run

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

$ curl localhost:8080

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

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

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

$ 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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GcsController {

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

  @RequestMapping(value = "/", method = RequestMethod.GET)
  public String readGcsFile() throws IOException {
    return StreamUtils.copyToString(
        gcsFile.getInputStream(),
        Charset.defaultCharset()) + "\n";
  }
}

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

$ ./mvnw spring-boot:run

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

$ curl localhost:8080

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

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

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

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

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

@RestController
public class GcsController {
  @RequestMapping(value = "/", method = RequestMethod.POST)
  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 ) দিয়ে মেরে ফেলুন।

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

আরও জানুন

লাইসেন্স

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