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

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

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

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

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



Amazon S3 (Simple Storage Service) प्रोटोकॉल के अनुकूल क्लाउड ऑब्जेक्ट स्टोरेज, असंरचित डेटा: इमेज, वीडियो, लॉग, बैकअप और बिल्ड आर्टिफैक्ट को संग्रहीत करने के लिए डी-फैक्टो मानक बन गए हैं। Kotlin पारिस्थितिकी तंत्र (JVM, Android, Kotlin Multiplatform) में S3 के साथ इंटरैक्ट करने के लिए दो मुख्य दृष्टिकोणों का उपयोग किया जाता है: आधिकारिक AWS SDK for Java/Kotlin और हल्का MinIO Java SDK। इस लेख में हम दोनों विकल्पों पर चर्चा करेंगे, कोड उदाहरण दिखाएंगे और चयन के लिए सिफारिशें देंगे।



1. AWS SDK for Java (Kotlin)



Amazon का आधिकारिक SDK S3 की सभी क्षमताओं का समर्थन करता है, जिसमें मल्टी-थ्रेडेड अपलोड, लाइफसाइकिल प्रबंधन, वर्जनिंग और एन्क्रिप्शन शामिल हैं। Kotlin के लिए, build.gradle.kts में निर्भरता जोड़ना पर्याप्त है:



dependencies {    implementation("software.amazon.awssdk:s3:2.27.0")    implementation("software.amazon.awssdk:auth:2.27.0")}


S3 बकेट में फ़ाइल अपलोड करने का मूल उदाहरण:



import software.amazon.awssdk.auth.credentials.AwsBasicCredentialsimport software.amazon.awssdk.auth.credentials.StaticCredentialsProviderimport software.amazon.awssdk.regions.Regionimport software.amazon.awssdk.services.s3.S3Clientimport software.amazon.awssdk.services.s3.model.PutObjectRequestimport java.nio.file.Paths

fun main() { val credentials = AwsBasicCredentials.create("ACCESS_KEY", "SECRET_KEY") val s3 = S3Client.builder() .region(Region.EU_CENTRAL_1) .credentialsProvider(StaticCredentialsProvider.create(credentials)) .build()

val request = PutObjectRequest.builder() .bucket("my-bucket") .key("uploads/photo.jpg") .contentType("image/jpeg") .build()

s3.putObject(request, Paths.get("/local/path/photo.jpg")) println("फ़ाइल अपलोड हो गई")}


ऑब्जेक्ट डाउनलोड करना:



import software.amazon.awssdk.services.s3.model.GetObjectRequest

val getRequest = GetObjectRequest.builder() .bucket("my-bucket") .key("uploads/photo.jpg") .build()

s3.getObject(getRequest, Paths.get("/local/download/photo.jpg"))


2. MinIO Java SDK (S3-संगत स्टोरेज)



MinIO एक उच्च-प्रदर्शन ओपन-सोर्स ऑब्जेक्ट स्टोरेज है, जो S3 API के साथ पूरी तरह से संगत है। इसका SDK स्थानीय MinIO के साथ-साथ AWS S3, DigitalOcean Spaces, Yandex Object Storage और अन्य प्रदाताओं के साथ काम करने के लिए उपयुक्त है। निर्भरता जोड़ें:



dependencies {    implementation("io.minio:minio:8.5.10")}


MinIO SDK के माध्यम से फ़ाइल अपलोड करने का उदाहरण:



import io.minio.MinioClientimport io.minio.PutObjectArgsimport java.io.FileInputStream

fun main() { val minioClient = MinioClient.builder() .endpoint("https://play.min.io") .credentials("minioadmin", "minioadmin") .build()

val inputStream = FileInputStream("/local/data/report.pdf") minioClient.putObject( PutObjectArgs.builder() .bucket("documents") .`object`("reports/2024/report.pdf") .stream(inputStream, inputStream.available(), -1) .contentType("application/pdf") .build() ) println("फ़ाइल MinIO में अपलोड हो गई")}


MinIO के माध्यम से डाउनलोड करना:



import io.minio.GetObjectArgsimport java.io.FileOutputStream

val getArgs = GetObjectArgs.builder() .bucket("documents") .`object`("reports/2024/report.pdf") .build()

val response = minioClient.getObject(getArgs)response.use { stream -> FileOutputStream("/local/download/report.pdf").use { output -> stream.transferTo(output) }}


3. सार्वजनिक लिंक और समाप्ति समय के साथ कार्य



बिना प्रमाणीकरण के डाउनलोड के लिए अस्थायी लिंक (presigned URL) उत्पन्न करना

अनुशंसाएँ