All Products
Search
Document Center

Enterprise Distributed Application Service:Integrasikan OSS dengan aplikasi Spring Cloud di EDAS

Last Updated:Mar 12, 2026

Buat aplikasi Spring Cloud yang mengunggah, mengunduh, dan membaca file dari Object Storage Service (OSS), lalu terapkan ke Enterprise Distributed Application Service (EDAS) tanpa mengubah kode atau konfigurasi.

Mengapa menggunakan OSS

OSS dikembangkan oleh Alibaba Cloud untuk menyediakan layanan penyimpanan yang aman, hemat biaya, dan sangat andal. Layanan ini memungkinkan Anda menyimpan data dalam jumlah besar di cloud. OSS menyediakan operasi API RESTful yang independen terhadap platform, sehingga Anda dapat menyimpan dan mengakses berbagai jenis data dalam aplikasi berbasis Spring Cloud.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Cara kerja

Spring Cloud AliCloud OSS mengintegrasikan aplikasi Spring Cloud dengan Alibaba Cloud OSS. Setelah menambahkan dependensi starter dan mengonfigurasi kredensial, Anda dapat:

  • Menyuntikkan client OSS langsung ke dalam bean Spring Anda

  • Mengakses objek OSS sebagai instance Resource Spring dengan menggunakan @Value("oss://...")

  • Men-deploy aplikasi yang sama ke EDAS tanpa mengubah kode atau konfigurasi

Siapkan proyek Maven

  1. Buat proyek Maven bernama oss-example.

  2. Tambahkan dependensi berikut ke dalam pom.xml:

    Spring Boot 1.x telah mencapai masa akhir dukungan. Jika Anda harus menggunakan Spring Boot 1.x, gunakan versi 1.5.x bersama Spring Cloud Edgware dan Spring Cloud Alibaba 1.5.1.RELEASE.
       <parent>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-parent</artifactId>
           <version>2.1.4.RELEASE</version>
           <relativePath/>
       </parent>
    
       <dependencies>
           <dependency>
               <groupId>com.alibaba.cloud</groupId>
               <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
               <version>2.1.1.RELEASE</version>
           </dependency>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-web</artifactId>
           </dependency>
       </dependencies>
    
       <dependencyManagement>
           <dependencies>
               <dependency>
                   <groupId>org.springframework.cloud</groupId>
                   <artifactId>spring-cloud-dependencies</artifactId>
                   <version>Finchley.SR1</version>
                   <type>pom</type>
                   <scope>import</scope>
               </dependency>
           </dependencies>
       </dependencyManagement>
  3. Buat paket bernama spring.cloud.alicloud.oss di bawah direktori src/main/java.

Buat titik masuk aplikasi

Buat kelas startup OssApplication di dalam paket spring.cloud.alicloud.oss. Saat startup, kelas ini memeriksa apakah bucket target sudah ada dan membuatnya jika diperlukan.

package spring.cloud.alicloud.oss;

import com.aliyun.oss.OSS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import java.net.URISyntaxException;

@SpringBootApplication
public class OssApplication {

    // Ganti dengan nama bucket aktual Anda
    public static final String BUCKET_NAME = "test-bucket";

    public static void main(String[] args) throws URISyntaxException {
        SpringApplication.run(OssApplication.class, args);
    }

    @Bean
    public AppRunner appRunner() {
        return new AppRunner();
    }

    class AppRunner implements ApplicationRunner {
        @Autowired
        private OSS ossClient;

        @Override
        public void run(ApplicationArguments args) throws Exception {
            try {
                if (!ossClient.doesBucketExist(BUCKET_NAME)) {
                    ossClient.createBucket(BUCKET_NAME);
                }
            } catch (Exception e) {
                System.err.println("oss handle bucket error: " + e.getMessage());
                System.exit(-1);
            }
        }
    }
}

Tambahkan file contoh

Buat file bernama oss-test.json di dalam direktori src/main/resources:

{
  "name": "oss-test"
}

Buat REST controller

Buat OssController di dalam paket spring.cloud.alicloud.oss. Controller ini menyediakan tiga titik akhir untuk mengunggah, mengunduh, dan membaca file melalui antarmuka Resource Spring.

package spring.cloud.alicloud.oss;

import com.aliyun.oss.OSS;
import com.aliyun.oss.common.utils.IOUtils;
import com.aliyun.oss.model.OSSObject;
import org.apache.commons.codec.CharEncoding;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.nio.charset.Charset;

@RestController
public class OssController {

    @Autowired
    private OSS ossClient;

    // Mengakses objek OSS sebagai Resource Spring
    @Value("oss://" + OssApplication.BUCKET_NAME + "/oss-test.json")
    private Resource file;

    /**
     * Mengunggah oss-test.json dari classpath ke bucket OSS.
     */
    @GetMapping("/upload")
    public String upload() {
        try {
            ossClient.putObject(OssApplication.BUCKET_NAME, "oss-test.json", this
                    .getClass().getClassLoader().getResourceAsStream("oss-test.json"));
        } catch (Exception e) {
            e.printStackTrace();
            return "upload fail: " + e.getMessage();
        }
        return "upload success";
    }

    /**
     * Membaca objek OSS melalui antarmuka Resource Spring.
     */
    @GetMapping("/file-resource")
    public String fileResource() {
        try {
            return "get file resource success. content: " + StreamUtils.copyToString(
                    file.getInputStream(), Charset.forName(CharEncoding.UTF_8));
        } catch (Exception e) {
            e.printStackTrace();
            return "get resource fail: " + e.getMessage();
        }
    }

    /**
     * Mengunduh objek OSS secara langsung melalui client OSS.
     */
    @GetMapping("/download")
    public String download() {
        try {
            OSSObject ossObject = ossClient.getObject(OssApplication.BUCKET_NAME, "oss-test.json");
            return "download success, content: " + IOUtils
                    .readStreamAsString(ossObject.getObjectContent(), CharEncoding.UTF_8);
        } catch (Exception e) {
            e.printStackTrace();
            return "download fail: " + e.getMessage();
        }
    }
}

Ringkasan titik akhir:

Titik AkhirMetodeDeskripsi
/uploadGETMengunggah oss-test.json dari classpath ke bucket OSS Anda
/file-resourceGETMembaca file dari OSS melalui abstraksi Resource Spring (@Value("oss://..."))
/downloadGETMengambil file secara langsung melalui client OSS

Konfigurasikan kredensial dan titik akhir

  1. Dapatkan ID AccessKey dan Rahasia AccessKey Anda dari halaman Security Management.

  2. Dapatkan titik akhir untuk wilayah bucket Anda. Lihat Wilayah dan titik akhir.

  3. Buat file application.properties di dalam direktori src/main/resources: Ganti placeholder berikut dengan nilai aktual Anda:

    PlaceholderDeskripsiContoh
    <your-access-key>ID AccessKeyLTAI5tXxx
    <your-secret-key>Rahasia AccessKeyxXxXxXx
    <your-endpoint>Awalan titik akhir regionaloss-cn-hangzhou
       spring.application.name=oss-example
       server.port=18084
    
       # Ganti dengan kredensial dan titik akhir aktual Anda
       spring.cloud.alicloud.access-key=<your-access-key>
       spring.cloud.alicloud.secret-key=<your-secret-key>
       spring.cloud.alicloud.oss.endpoint=<your-endpoint>.aliyuncs.com
       management.endpoints.web.exposure.include=*

Verifikasi hasil

  1. Jalankan metode main dari OssApplication untuk memulai layanan.

  2. Buka http://127.0.0.1:18084/upload di browser Anda. Jika muncul upload success, berarti file berhasil diunggah.

  3. Verifikasi di Konsol OSS: buka bucket Anda, klik Files di panel navigasi sebelah kiri, dan pastikan oss-test.json muncul dalam daftar file.

  4. Buka http://127.0.0.1:18084/download untuk mengunduh file tersebut. Output yang diharapkan adalah:

       {
         "name": "oss-test"
       }
  5. Buka http://127.0.0.1:18084/file-resource untuk membaca file melalui antarmuka Resource Spring. Output yang diharapkan adalah:

       {
         "name": "oss-test"
       }

Jika langkah apa pun gagal, periksa log konsol untuk menemukan kesalahan, perbaiki masalah tersebut, lalu restart aplikasi.

Terapkan ke EDAS

Spring Cloud AliCloud OSS dirancang untuk mendukung migrasi aplikasi dari lingkungan pengembangan aslinya ke EDAS. Anda dapat menerapkan aplikasi tanpa mengubah kode atau konfigurasi.

Untuk langkah-langkah penerapan, lihat:

Referensi konfigurasi

PropertiDeskripsiContoh
spring.cloud.alicloud.access-keyID AccessKey untuk otentikasiLTAI5tXxx
spring.cloud.alicloud.secret-keyRahasia AccessKey untuk otentikasixXxXxXx
spring.cloud.alicloud.oss.endpointTitik akhir regional OSSoss-cn-hangzhou.aliyuncs.com
server.portPort aplikasi18084
spring.application.nameNama aplikasi Springoss-example

Langkah selanjutnya