Spring Resource एब्स्ट्रैक्ट की मदद से Cloud Storage में फ़ाइलें ऐक्सेस करें
इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी
1. खास जानकारी
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 सेवाओं के इस्तेमाल के अपने अनुभव को आप कितनी रेटिंग देंगे?
2. सेट अप और ज़रूरी शर्तें
अपनी सुविधा के हिसाब से एनवायरमेंट सेट अप करना
अगर आपके पास पहले से कोई Google खाता (Gmail या Google Apps) नहीं है, तो आपको एक खाता बनाना होगा. Google Cloud Platform Console (console.cloud.google.com) में साइन इन करें और एक नया प्रोजेक्ट बनाएं:
प्रोजेक्ट आईडी याद रखें, सभी 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].
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 बूट ऐप्लिकेशन जनरेट करने के लिए, कमांड लाइन का इस्तेमाल करके ऐप्लिकेशन लिखना शुरू करें:
$ 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
) से बंद करें.
5. क्लाउड स्टोरेज में फ़ाइल पढ़ें
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
) से बंद करें.
6. Cloud Storage में फ़ाइल में लिखें
आपने 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
) से बंद करें.
7. बधाई हो!
आपने क्लाउड मेमोरी में फ़ाइलों को आसानी से ऐक्सेस करने के लिए स्प्रिंग रिसॉर्स एब्स्ट्रैक्शन का इस्तेमाल करना सीखा. आपने Spring बूट वेब ऐप्लिकेशन लिखा है, जो Cloud Storage में मौजूद फ़ाइल को पढ़ सकता है और उस पर लिख सकता है. आपने Cloud Storage के लिए भी स्प्रिंग बूट स्टार्टर के बारे में सीखा, जो उस सुविधा को चालू करता है.
ज़्यादा जानें
- क्लाउड स्टोरेज
- Spring Cloud Google Cloud Project
- Google Cloud GitHub डेटा स्टोर करने की जगह पर वसंत
- Google Cloud पर Java
लाइसेंस
यह काम, क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत मिला है.