Topik ini menyediakan instruksi dan contoh kode untuk menggunakan S3 Java API guna terhubung ke dan mengakses Lindorm.
Prasyarat
Diperlukan lingkungan Java JDK 1.8 atau versi yang lebih baru.
Anda telah memperoleh S3-compatible Endpoint untuk mesin tabel lebar Lindorm. Untuk informasi selengkapnya, lihat Lihat alamat koneksi.
Anda telah menambahkan alamat IP klien ke daftar putih Lindorm. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih.
Prosedur
Instal S3 Java SDK. Buka klien Eclipse, buat proyek, lalu konfigurasikan dependensi Maven dalam file pom.xml sebagai berikut:
Tambahkan dependensi Maven untuk Java SDK 1.x.
<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.11.655</version> </dependency>Tambahkan dependensi Maven untuk Java SDK 2.x.
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-sdk-java</artifactId> <version>2.17.32</version> </dependency>
Dalam proyek Anda, masukkan kode berikut untuk terhubung ke dan mengakses LindormTable.
Contoh kode Java SDK 1.x
Buat koneksi
String s3Endpoint = "http://ld-bp17j28j2y7pm****-proxy-blob.lindorm.rds.aliyuncs.com:9053"; // Titik akhir kompatibel S3 untuk LindormTable String bucketName = "testbucket"; // Buat koneksi AmazonS3 client = AmazonS3ClientBuilder.standard() .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(s3Endpoint, null)) .withPathStyleAccessEnabled(true) .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials("AK", "SK"))) .build();CatatanGanti bidang AK dan SK pada contoh dengan username dan password untuk LindormTable. Simpan password dalam variabel lingkungan atau file konfigurasi. Jangan hardcode password.
Operasi bucket
// Buat bucket Bucket bucket = client.createBucket(bucketName); // Periksa apakah bucket ada HeadBucketResult result = client.headBucket(new HeadBucketRequest(bucketName)); // Daftar semua bucket List<Bucket> buckets = client.listBuckets(new ListBucketsRequest());CatatanUntuk membuat pengguna baru dan memberikan izin operasi bucket kepada mereka, lihat Buat pengguna dan Pengelolaan izin protokol S3.
Operasi objek
String content = "content"; // Unggah objek client.putObject(bucketName, key_name, content); // Baca objek S3Object object = client.getObject(bucketName, keyName); // Daftar semua objek dalam bucket // list v1 ObjectListing objects = client.listObjects(bucketName); // list v2 ListObjectsV2Result results = client.listObjectsV2(bucketName); // Hapus objek client.deleteObject(bucketName, keyName); // Hapus objek secara batch client.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(keyName));Operasi unggah multi-bagian
// File yang akan diunggah File file = new File(filePath); long contentLength = file.length(); long partSize = 5 * 1024 * 1024; // Atur ukuran bagian menjadi 5 MB List<PartETag> partETags = new ArrayList<PartETag>(); // Inisialisasi unggah multi-bagian InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(bucketName, keyName); InitiateMultipartUploadResult initResponse = client.initiateMultipartUpload(initRequest); // Unggah bagian long filePosition = 0; for (int i = 1; filePosition < contentLength; i++) { partSize = Math.min(partSize, (contentLength - filePosition)); // Permintaan unggah bagian UploadPartRequest uploadRequest = new UploadPartRequest() .withBucketName(bucketName) .withKey(keyName) .withUploadId(initResponse.getUploadId()) .withPartNumber(i) .withFileOffset(filePosition) .withFile(file) .withPartSize(partSize); UploadPartResult uploadResult = client.uploadPart(uploadRequest); partETags.add(uploadResult.getPartETag()); filePosition += partSize; } // Selesaikan unggah multi-bagian. Objek kini terlihat. CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(bucketName, keyName, initResponse.getUploadId(), partETags); client.completeMultipartUpload(compRequest);
Contoh kode Java SDK 2.x
Buat koneksi
String s3Endpoint = "http://ld-bp17j28j2y7pm****-proxy-blob.lindorm.rds.aliyuncs.com:9053"; // Titik akhir kompatibel S3 untuk LindormTable String bucketName = "testbucket"; // Buat koneksi AwsBasicCredentials creds = AwsBasicCredentials.create("AK", "SK"); S3Client client = S3Client.builder() .serviceConfiguration(b -> b.checksumValidationEnabled(false)) .region(Region.AP_EAST_1) .credentialsProvider(StaticCredentialsProvider.create(creds)) .endpointOverride(new URI(s3Endpoint)) .build(); // Tutup koneksi client.close();CatatanGanti bidang AK dan SK pada contoh dengan username dan password untuk LindormTable. Simpan password dalam variabel lingkungan atau file konfigurasi. Jangan hardcode password.
Operasi bucket
// Buat bucket S3Waiter s3Waiter = client.waiter(); CreateBucketRequest bucketRequest = CreateBucketRequest.builder() .bucket(bucketName) .build(); // Periksa apakah bucket ada client.createBucket(bucketRequest); HeadBucketRequest bucketRequestWait = HeadBucketRequest.builder() .bucket(bucketName) .build(); WaiterResponse<HeadBucketResponse> waiterResponse = s3Waiter.waitUntilBucketExists(bucketRequestWait); waiterResponse.matched().response().ifPresent(System.out::println);CatatanUntuk membuat pengguna baru dan memberikan izin operasi bucket kepada mereka, lihat Buat pengguna dan Pengelolaan izin protokol S3.
Operasi objek
// Tulis objek PutObjectRequest putOb = PutObjectRequest.builder() .bucket(bucketName) .key(keyName) .build(); PutObjectResponse response = client.putObject(putOb, RequestBody.fromString("content")); // Baca objek GetObjectRequest objectRequest = GetObjectRequest .builder() .key(keyName) .bucket(bucketName) .build(); ResponseBytes<GetObjectResponse> objectBytes = client.getObjectAsBytes(objectRequest); byte[] data = objectBytes.asByteArray(); // Daftar objek ListObjectsRequest listObjects = ListObjectsRequest .builder() .bucket(bucketName) .build(); ListObjectsResponse res = client.listObjects(listObjects); List<S3Object> objects = res.contents();Operasi unggah multi-bagian
// Inisialisasi unggah multi-bagian CreateMultipartUploadRequest createMultipartUploadRequest = CreateMultipartUploadRequest.builder() .bucket(bucketName) .key(keyName) .build(); CreateMultipartUploadResponse response = client.createMultipartUpload(createMultipartUploadRequest); String uploadId = response.uploadId(); System.out.println(uploadId); // Unggah bagian 1 UploadPartRequest uploadPartRequest1 = UploadPartRequest.builder().bucket(bucketName).key(keyName) .uploadId(uploadId) .partNumber(1).build(); String etag1 = client.uploadPart(uploadPartRequest1, RequestBody.fromString("content1")).eTag(); CompletedPart part1 = CompletedPart.builder().partNumber(1).eTag(etag1).build(); // Unggah bagian 2 UploadPartRequest uploadPartRequest2 = UploadPartRequest.builder().bucket(bucketName).key(keyName) .uploadId(uploadId) .partNumber(2).build(); String etag2 = client.uploadPart(uploadPartRequest2, RequestBody.fromString("content2")).eTag(); CompletedPart part2 = CompletedPart.builder().partNumber(2).eTag(etag2).build(); // Selesaikan unggah multi-bagian. Objek sekarang dapat dilihat. CompletedMultipartUpload completedMultipartUpload = CompletedMultipartUpload.builder() .parts(part1, part2) .build(); CompleteMultipartUploadRequest completeMultipartUploadRequest = CompleteMultipartUploadRequest.builder() .bucket(bucketName) .key(keyName) .uploadId(uploadId) .multipartUpload(completedMultipartUpload) .build(); client.completeMultipartUpload(completeMultipartUploadRequest);