Spring Resource एब्स्ट्रैक्ट की मदद से Cloud Storage में फ़ाइलें ऐक्सेस करें

Spring Framework, फ़ाइल सिस्टम, क्लासपाथ या वेब जैसे कई स्रोतों से फ़ाइलों को आसानी से पढ़ने और लिखने के लिए, ResourceLoader ऐब्स्ट्रैक्शन देता है. आपको बस जाने-माने प्रोटोकॉल प्रीफ़िक्स का इस्तेमाल करके, संसाधन के साथ यूआरआई को बताना होगा. उदाहरण के लिए, स्थानीय फ़ाइल सिस्टम पर किसी फ़ाइल को ऐक्सेस करने के लिए, आप file:/data/config.yaml जैसे यूआरआई को तय करेंगे.

आप एक स्प्रिंग बूट ऐप्लिकेशन लिखेंगे. यह स्प्रिंग संसाधन एब्स्ट्रैक्ट और gs: प्रोटोकॉल प्रीफ़िक्स का इस्तेमाल करके, Cloud Storage में सेव की गई फ़ाइलों को ऐक्सेस करेगा.

आप ऐसा Cloud Shell और Cloud SDK gcloud कमांड-लाइन टूल का इस्तेमाल करके कर सकते हैं.

आप क्या #39;जानेंगे

  • Cloud Storage स्प्रिंग बूट स्टार्टर का इस्तेमाल कैसे करें
  • Spring के साथ Cloud Storage में फ़ाइलें ऐक्सेस करने का तरीका
  • Resource और WritableResource ऐब्स्ट्रैक्शन का इस्तेमाल कैसे करें

आपको क्या चाहिए

  • Google Cloud का कोई प्रोजेक्ट
  • ब्राउज़र, जैसे कि Google Chrome
  • Vim, Emacs, और GNU नैनो जैसे मानक Linux टेक्स्ट एडिटर के बारे में जानकारी

आप कोडलैब का इस्तेमाल कैसे करेंगे?

रीड ओनली कसरत पढ़ें और पूरा करें

आप HTML और सीएसएस वेब ऐप्लिकेशन बनाने के अपने अनुभव को क्या रेटिंग देंगे?

नया बीच का लेवल दक्षता

Google Cloud सेवाओं के इस्तेमाल के अपने अनुभव को आप कितनी रेटिंग देंगे?

शुरुआती बीच का लेवल असरदार

अपनी सुविधा के हिसाब से एनवायरमेंट सेट अप करना

अगर आपके पास पहले से कोई Google खाता (Gmail या Google Apps) नहीं है, तो आपको एक खाता बनाना होगा. Google Cloud Platform Console (console.cloud.google.com) में साइन इन करें और एक नया प्रोजेक्ट बनाएं:

10-02-2016 का स्क्रीनशॉट 12:45:26.png

प्रोजेक्ट आईडी याद रखें, सभी Google क्लाउड प्रोजेक्ट में दिया गया नाम (ऊपर दिया गया नाम पहले ही लिया जा चुका है और यह आपके लिए काम नहीं करेगा!). इसे बाद में इस कोडलैब (कोड बनाना सीखना) में PROJECT_ID के तौर पर बताया जाएगा.

इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग को चालू करना होगा.

इस कोडलैब के जवाब में कुछ डॉलर से ज़्यादा खर्च नहीं करना चाहिए. हालांकि, अगर आप संसाधनों का इस्तेमाल करना जारी रखते हैं या उन्हें चलाना बंद कर देते हैं, तो यह ज़्यादा भी हो सकता है.

Google Cloud Platform के नए उपयोगकर्ता, 300 डॉलर का मुफ़्त ट्रायल पा सकते हैं.

क्लाउड शेल

आप Cloud Shell का इस्तेमाल करेंगे, जो कि Google Cloud में चल रहा कमांड-लाइन एनवायरमेंट है.

Google Cloud Shell चालू करें

GCP Console पर सबसे ऊपर दाईं ओर मौजूद टूलबार में, Cloud Shell आइकॉन पर क्लिक करें:

इसके बाद, &Cont &Cloud Shell शुरू करें &कोटेशन पर क्लिक करें;:

प्रावधान करने और पर्यावरण से जुड़ने में सिर्फ़ कुछ समय लगना चाहिए:

इस वर्चुअल मशीन में डेवलपमेंट से जुड़े सभी टूल हैं#39. इसमें लगातार 5 जीबी की होम डायरेक्ट्री मिलती है. यह Google Cloud पर चलती है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती जाती है. इस लैब में, हो सकता है कि किसी ब्राउज़र या Chromebook से आपका काम न हो.

Cloud Shell से कनेक्ट होने के बाद, आपको यह दिख जाएगा कि इसकी पुष्टि पहले से ही हो चुकी है और प्रोजेक्ट पहले से ही आपके PROJECT_ID पर सेट है.

पुष्टि करने के लिए, Cloud Shell में यह निर्देश चलाएं:

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].

Cloud Shell लॉन्च होने के बाद, आप फ़ाइलें बनाना और उन्हें Cloud Storage में ट्रांसफ़र करना शुरू कर सकते हैं.

my-file.txt नाम वाली फ़ाइल बनाएं:

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

इसके बाद, Cloud Storage में एक नई यूनीक बकेट बनाएं और gsutil का इस्तेमाल करके, फ़ाइल को वहां ट्रांसफ़र करें.

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

Cloud Storage में स्टोरेज ब्राउज़र पर जाएं और पुष्टि करें कि बकेट और फ़ाइल वहां हैं.

वसंत के शुरुआती ऐप्लिकेशन के साथ एक नया Spring बूट ऐप्लिकेशन जनरेट करने के लिए, कमांड लाइन का इस्तेमाल करके ऐप्लिकेशन लिखना शुरू करें:

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

ध्यान दें कि इनिशियलाइज़र, टेंप्लेट ऐप्लिकेशन के pom.xml में आपकी डिपेंडेंसी में अपने-आप spring-boot-starter-web और spring-cloud-gcp-starter-storage जोड़ देगा.

टेंप्लेट ऐप्लिकेशन की डायरेक्ट्री बदलें:

$ cd spring-gcs

Maven का इस्तेमाल करके ऐप्लिकेशन बनाएं और उसे चलाएं.

$ ./mvnw spring-boot:run

ऐप्लिकेशन, पोर्ट 8080 पर सुनना शुरू कर देगा. ऐप्लिकेशन ऐक्सेस करने के लिए, नया Cloud Shell टैब खोलें और curl को चलाएं.

$ curl localhost:8080

आपको 404 रिस्पॉन्स मिलना चाहिए, क्योंकि ऐप्लिकेशन अभी तक कुछ भी काम का नहीं है. पिछले Cloud Shell टैब पर वापस जाएं, जहां ऐप्लिकेशन चल रहा है और उसे Control+C (Macintosh पर Command+C) से बंद करें.

my-file.txt को ऐक्सेस करने के लिए अपने Spring बूट ऐप्लिकेशन में बदलाव करें. इस फ़ाइल को आपने पहले Cloud Storage में सेव किया हुआ है. आपका लक्ष्य एचटीटीपी के ज़रिए फ़ाइल का कॉन्टेंट दिखाना है.

इन निर्देशों में, आप फ़ाइलों में बदलाव करने के लिए, Vim का इस्तेमाल कर सकते हैं. हालांकि, आप Cloud Shell में Emacs, GNU Nano या पहले से मौजूद कोड एडिटर का भी इस्तेमाल कर सकते हैं:

$ cd ~/spring-gcs

ऐप्लिकेशन में REST कंट्रोलर GcsController जोड़ें.

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

नीचे दिए गए कोड को पेस्ट करें और पहले बनाए गए बकेट से संसाधन यूआरआई को ठीक करना न भूलें. 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 पर सुनना शुरू कर देता है. ऐप्लिकेशन ऐक्सेस करने के लिए, नया Cloud Shell टैब खोलें और curl को चलाएं.

$ curl localhost:8080

अब आपको दिखेगा कि ऐप्लिकेशन से फ़ाइल का कॉन्टेंट वापस आ गया है. पिछले Cloud Shell टैब पर जाएं जहां ऐप्लिकेशन चल रहा है और उसे Control+C (Macintosh पर Command+C) से बंद करें.

आपने Google Cloud Storage में फ़ाइल के कॉन्टेंट को पढ़ा और उसे Spring REST कंट्रोलर के ज़रिए दिखाया. अब, नए फ़ाइल कॉन्टेंट को उसी एचटीटीपी एंडपॉइंट पर पोस्ट करके फ़ाइल का कॉन्टेंट बदलें.

आपको GcsController में एक और तरीका जोड़ना होगा, जो कि एचटीटीपी POST के जवाब में दे और डेटा को Cloud Storage में आपकी फ़ाइल में लिख दे. इस बार, स्प्रिंग 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 पर सुनना शुरू कर देता है. ऐप्लिकेशन में कोई मैसेज पोस्ट करने के लिए, एक नया Cloud Shell टैब खोलें और curl को चलाएं.

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

आपको यह पुष्टि दिखाई देगी कि फ़ाइल का कॉन्टेंट अपडेट कर दिया गया है. हालांकि, GET करके पुष्टि करें.

$ curl localhost:8080

आपको ऐप्लिकेशन से मिली फ़ाइल का अपडेट किया गया कॉन्टेंट देखना चाहिए. पिछले Cloud Shell टैब पर वापस जाएं, जहां ऐप्लिकेशन चल रहा है और उसे Control+C (Macintosh पर Command+C) से बंद करें.

आपने क्लाउड मेमोरी में फ़ाइलों को आसानी से ऐक्सेस करने के लिए स्प्रिंग रिसॉर्स एब्स्ट्रैक्शन का इस्तेमाल करना सीखा. आपने Spring बूट वेब ऐप्लिकेशन लिखा है, जो Cloud Storage में मौजूद फ़ाइल को पढ़ सकता है और उस पर लिख सकता है. आपने Cloud Storage के लिए भी स्प्रिंग बूट स्टार्टर के बारे में सीखा, जो उस सुविधा को चालू करता है.

ज़्यादा जानें

लाइसेंस

यह काम, क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत मिला है.