Java में S3 और क्लाउड स्टोरेज के साथ कार्य: AWS SDK लाइब्रेरी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Java में AWS SDK के साथ S3 और क्लाउड स्टोरेज के साथ कार्य



S3 प्रोटोकॉल (Amazon Simple Storage Service) पर क्लाउड ऑब्जेक्ट स्टोरेज असंरचित डेटा को संग्रहीत करने के लिए डी-फैक्टो मानक बन गए हैं। Java में S3-संगत स्टोरेज (Amazon S3, MinIO, Yandex Object Storage, DigitalOcean Spaces, आदि) के साथ कार्य करने के लिए आधिकारिक लाइब्रेरी AWS SDK for Java का उपयोग किया जाता है। इस लेख में हम कनेक्शन, क्लाइंट इनिशियलाइज़ेशन और फ़ाइलों के साथ बुनियादी संचालन को समझेंगे।



AWS SDK को कनेक्ट करना



S3 के साथ कार्य करने के लिए pom.xml (Maven) में निर्भरता जोड़ें:



<dependency>    <groupId>software.amazon.awssdk</groupId>    <artifactId>s3</artifactId>    <version>2.27.0</version></dependency>


Gradle के लिए:



implementation 'software.amazon.awssdk:s3:2.27.0'


S3 क्लाइंट बनाना



क्लाइंट को बिल्डर के माध्यम से कॉन्फ़िगर किया जाता है। Amazon S3 के लिए केवल क्षेत्र निर्दिष्ट करना पर्याप्त है:



S3Client s3 = S3Client.builder()    .region(Region.EU_CENTRAL_1)    .build();


संगत स्टोरेज (MinIO, Yandex Object Storage) के लिए endpoint और credentials निर्दिष्ट करना आवश्यक है:



String endpoint = "https://storage.yandexcloud.net";String accessKey = "YOUR_ACCESS_KEY";String secretKey = "YOUR_SECRET_KEY";

S3Client s3 = S3Client.builder() .endpointOverride(URI.create(endpoint)) .region(Region.US_EAST_1) // क्षेत्र कोई भी हो सकता है .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create(accessKey, secretKey))) .build();


बकेट के साथ बुनियादी संचालन



  • बकेट बनाना
  • अस्तित्व की जाँच करना
  • बकेट हटाना


बकेट बनाने का उदाहरण:



String bucketName = "my-java-bucket";try {    s3.createBucket(CreateBucketRequest.builder()        .bucket(bucketName)        .build());    System.out.println("बकेट बनाया गया: " + bucketName);} catch (S3Exception e) {    System.err.println("त्रुटि: " + e.awsErrorDetails().errorMessage());}


फ़ाइलें अपलोड करना (Upload)



फ़ाइल को स्ट्रीम, स्ट्रिंग या स्थानीय फ़ाइल से अपलोड किया जा सकता है:



// स्थानीय फ़ाइल से अपलोडs3.putObject(PutObjectRequest.builder()        .bucket(bucketName)        .key("docs/report.pdf")        .build(),    RequestBody.fromFile(Paths.get("/home/user/report.pdf")));

// स्ट्रिंग को टेक्स्ट फ़ाइल के रूप में अपलोडs3.putObject(PutObjectRequest.builder() .bucket(bucketName) .key("hello.txt") .contentType("text/plain") .build(), RequestBody.fromString("Hello, S3!"));


फ़ाइलें डाउनलोड करना (Download)



ऑब्जेक्ट प्राप्त करने के लिए getObject का उपयोग करें:



// फ़ाइल में डाउनलोडs3.getObject(GetObjectRequest.builder()        .bucket(bucketName)        .key("docs/report.pdf")        .build(),    ResponseTransformer.toFile(Paths.get("downloaded_report.pdf")));

// स्ट्रिंग में डाउनलोडString content = s3.getObjectAsBytes(GetObjectRequest.builder() .bucket(bucketName) .key("hello.txt") .build()) .asUtf8String();System.out.println(content);


ऑब्जेक्ट हटाना



s3.deleteObject(DeleteObjectRequest.builder()    .bucket(bucketName)    .key("hello.txt")    .build());System.out.println("फ़ाइल हटा दी गई");


बकेट में ऑब्जेक्ट की सूची



सभी फ़ाइलों की सूची प्राप्त करने के लिए (पृष्ठानुसार आउटपुट के साथ):



ListObjectsV2Request listReq = ListObjectsV2Request.builder()    .bucket(bucketName)    .maxKeys(100)    .build();

ListObjectsV2Response listRes = s3.listObjectsV2(listReq);for (S3Object obj : listRes.contents()) { System.out.println(" - "

अनुशंसाएँ