All Products
Search
Document Center

Lindorm:Kembangkan aplikasi menggunakan S3 Java API

Last Updated:Aug 22, 2026

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

  1. 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>
  2. 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();
    Catatan

    Ganti 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());
    Catatan

    Untuk 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();
    Catatan

    Ganti 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);
    Catatan

    Untuk 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);