स्प्रिंग रिसॉर्स ऐब्स्ट्रैक्ट की मदद से, Cloud Storage में फ़ाइलें ऐक्सेस करना

1. खास जानकारी

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

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

ऐसा करने के लिए, Cloud Shell और Cloud SDK gcloud कमांड-लाइन टूल का इस्तेमाल करें.

आपको इनके बारे में जानकारी मिलेगी

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

आपको इन चीज़ों की ज़रूरत होगी

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

कोडलैब का इस्तेमाल कैसे किया जाएगा?

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

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

शुरुआती इंटरमीडिएट कुशल

Google Cloud की सेवाएं इस्तेमाल करने का आपका अनुभव कैसा रहा?

शुरुआती इंटरमीडिएट कुशल

2. सेटअप और ज़रूरी शर्तें

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

  1. Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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

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

इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. "साफ़ करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें सेक्शन में, संसाधनों को बंद करने का तरीका बताया गया है. इससे इस ट्यूटोरियल के अलावा बिलिंग की सुविधा नहीं मिलेगी. Google Cloud के नए उपयोगकर्ता, 300USD डॉलर के मुफ़्त में आज़माने वाले प्रोग्राम में हिस्सा ले सकते हैं.

क्लाउड शेल

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

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJANnQF0iBuUyfp1RzVad_4nCa0zLUDZLGFGFl पर क्लिक करें.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

अगर आपने Cloud Shell का इस्तेमाल पहले कभी नहीं किया है, तो आपको इसके बारे में जानकारी देने वाली एक इंटरमीडिएट स्क्रीन (पेज के फ़ोल्ड के नीचे) दिखेगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें (यह आपको फिर कभी नहीं दिखेगा). एक बार इस्तेमाल होने वाली स्क्रीन कुछ इस तरह दिखती है:

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

प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

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

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

  1. यह पुष्टि करने के लिए Cloud Shell में नीचे दिया गया कमांड चलाएं कि आपकी पुष्टि हो गई है:
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. Cloud Storage में फ़ाइल बनाना

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 में स्टोरेज ब्राउज़र पर जाएं. इसके बाद, पुष्टि करें कि बकेट और फ़ाइल वहां मौजूद हैं.

4. Spring बूट ऐप्लिकेशन शुरू करना

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

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

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

$ curl localhost:8080

आपको 404 कोड वाली गड़बड़ी मिलेगी, क्योंकि ऐप्लिकेशन ने अभी तक कुछ भी काम का नहीं किया है.

ऐप्लिकेशन के पिछले Cloud Shell टैब पर वापस जाएं और उसे Control+C (Macintosh पर Command+C) की मदद से बंद करें.

5. Cloud Storage में मौजूद फ़ाइल को पढ़ना

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

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

cloud-editor.png

$ 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.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 पर सुनना शुरू करता है. नया Cloud Shell टैब खोलें और ऐप्लिकेशन को ऐक्सेस करने के लिए curl चलाएं.

$ curl localhost:8080

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

6. Cloud Storage में मौजूद फ़ाइल में लिखना

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

आपको GcsController में एक और तरीका जोड़ना होगा जो एचटीटीपी पीओएसटी का जवाब देगा और 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;
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 पर सुनना शुरू करता है. नया 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) की मदद से बंद करें.

7. बधाई हो!

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

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

लाइसेंस

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