Mengunggah file ke Azure Blob Storage

Tutorial ini menunjukkan kepada Anda cara mengunggah dan membaca dari blob kontainer di akun Azure Blob Storage dari aplikasi Spring Boot.

Azure Blob Storage adalah solusi penyimpanan objek Microsoft untuk cloud. Penyimpanan blob dioptimalkan untuk menyimpan sejumlah besar data yang tidak terstruktur, seperti teks atau data biner.

Prasyarat

  • Langganan Azure - membuat secara gratis.
  • Java Development Kit (JDK) versi 8 atau yang lebih tinggi.
  • Apache Maven, versi 3.0 atau lebih tinggi.
  • cURL atau utilitas HTTP serupa untuk menguji fungsionalitas.
  • Akun penyimpanan dan kontainer Azure. Jika Anda tidak memilikinya, buat akun penyimpanan.
  • Aplikasi Spring Boot. Jika Anda tidak memilikinya, buat proyek Maven dengan Spring Initializr. Pastikan untuk memilih Proyek Maven dan, di bawah Dependensi, tambahkan dependensi Spring Web , lalu pilih Java versi 8 atau yang lebih tinggi.

Catatan

Untuk memberikan akses akun Anda ke sumber daya, di akun Azure Storage yang baru dibuat, tetapkan Storage Blob Data Contributor peran ke akun Microsoft Entra yang saat ini Anda gunakan. Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Microsoft Azure.

Penting

Spring Boot versi 2.5 atau yang lebih tinggi diperlukan untuk menyelesaikan langkah-langkah dalam tutorial ini.

Membuat kontainer

Pertama, buat kontainer bernama testcontainer dengan mengikuti instruksi di Mulai Cepat: Mengunggah, mengunduh, dan mencantumkan blob dengan portal Azure.

Mengunggah dan membaca blob dari kontainer akun Azure Storage

Sekarang setelah Anda memiliki akun dan kontainer Azure Storage, Anda dapat mengunggah dan membaca file dari blob dengan Spring Cloud Azure.

Untuk menginstal modul Spring Cloud Azure Storage Blob Starter, tambahkan dependensi berikut ke file pom.xml Anda:

  • Spring Cloud Azure Bill of Materials (BOM):

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.11.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Catatan

    Jika Anda menggunakan Spring Boot 2.x, pastikan untuk mengatur versi ke spring-cloud-azure-dependencies4.17.0. Bill of Material (BOM) ini harus dikonfigurasi di bagian <dependencyManagement> file pom.xml Anda. Ini memastikan bahwa semua dependensi Spring Cloud Azure menggunakan versi yang sama. Untuk informasi selengkapnya tentang versi yang digunakan untuk BOM ini, lihat Versi Spring Cloud Azure mana yang Harus Saya Gunakan.

  • Artefak Spring Cloud Azure Storage Blob Starter:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-storage-blob</artifactId>
    </dependency>
    

Kodekan aplikasi

Untuk mengunggah dan membaca file dari blob dengan menggunakan starter Blob Azure Storage Spring Cloud, konfigurasikan aplikasi dengan menggunakan langkah-langkah berikut.

  1. Konfigurasikan nama akun Penyimpanan dan titik akhir dalam file konfigurasi application.properties , seperti yang ditunjukkan dalam contoh berikut.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Buat kelas Java baru BlobController seperti yang ditunjukkan dalam contoh berikut. Kelas ini digunakan untuk mengunggah dan membaca file dari blob kontainer di akun Azure Storage.

    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.WritableResource;
    import org.springframework.util.StreamUtils;
    import org.springframework.web.bind.annotation.*;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.nio.charset.Charset;
    
    @RestController
    @RequestMapping("blob")
    public class BlobController {
    
        @Value("azure-blob://testcontainer/test.txt")
        private Resource blobFile;
    
        @GetMapping("/readBlobFile")
        public String readBlobFile() throws IOException {
            return StreamUtils.copyToString(
                    this.blobFile.getInputStream(),
                    Charset.defaultCharset());
        }
    
        @PostMapping("/writeBlobFile")
        public String writeBlobFile(@RequestBody String data) throws IOException {
            try (OutputStream os = ((WritableResource) this.blobFile).getOutputStream()) {
                os.write(data.getBytes());
            }
            return "file was updated";
        }
    }
    

    Tip

    Dalam tutorial ini, tidak ada operasi autentikasi dalam konfigurasi atau kode. Namun, menyambungkan ke layanan Azure memerlukan autentikasi. Untuk menyelesaikan autentikasi, Anda perlu menggunakan Azure Identity. Spring Cloud Azure menggunakan DefaultAzureCredential, yang disediakan pustaka Azure Identity untuk membantu Anda mendapatkan kredensial tanpa perubahan kode apa pun.

    DefaultAzureCredential mendukung beberapa metode autentikasi dan menentukan metode mana yang akan digunakan saat runtime. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (seperti lingkungan lokal dan produksi) tanpa menerapkan kode khusus lingkungan. Untuk informasi selengkapnya, lihat DefaultAzureCredential.

    Untuk menyelesaikan autentikasi di lingkungan pengembangan lokal, Anda dapat menggunakan Azure CLI, Visual Studio Code, PowerShell, atau metode lainnya. Untuk informasi selengkapnya, lihat Autentikasi Azure di lingkungan pengembangan Java. Untuk menyelesaikan autentikasi di lingkungan hosting Azure, sebaiknya gunakan identitas terkelola yang ditetapkan pengguna. Untuk informasi selengkapnya, lihat Apa yang dimaksud dengan identitas terkelola untuk sumber daya Azure?

  3. Setelah aplikasi Anda berjalan, gunakan curl untuk menguji aplikasi Anda dengan mengikuti langkah-langkah ini.

    1. Kirim permintaan POST untuk memperbarui konten file dengan menggunakan perintah berikut:

      curl http://localhost:8080/blob/writeBlobFile -d "new message" -H "Content-Type: text/plain"
      

      Anda akan melihat respons yang mengatakan file was updated.

    2. Kirim permintaan GET untuk memverifikasi konten file dengan menggunakan perintah berikut:

      curl -X GET http://localhost:8080/blob/readBlobFile
      

      Anda akan melihat teks "pesan baru" yang Anda posting.

Sebarkan ke Azure Spring Apps

Sekarang setelah Anda memiliki aplikasi Spring Boot yang berjalan secara lokal, saatnya untuk memindahkannya ke produksi. Azure Spring Apps memudahkan penyebaran aplikasi Spring Boot ke Azure tanpa perubahan kode apa pun. Layanan ini mengelola infrastruktur aplikasi Spring sehingga pengembang dapat fokus pada kode mereka. Azure Spring Apps menyediakan manajemen siklus hidup menggunakan pemantauan dan diagnostik yang komprehensif, manajemen konfigurasi, penemuan layanan, integrasi CI/CD, penyebaran biru-hijau, dan banyak lagi. Untuk menyebarkan aplikasi Anda ke Azure Spring Apps, lihat Menyebarkan aplikasi pertama Anda ke Azure Spring Apps.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Spring dan Azure, lanjutkan ke pusat dokumentasi Spring di Azure.

Lihat juga

Untuk informasi selengkapnya tentang Spring Boot Starters tambahan yang tersedia untuk Microsoft Azure, lihat Apa itu Spring Cloud Azure?

Untuk informasi selengkapnya tentang API penyimpanan Azure tambahan yang dapat Anda panggil dari aplikasi Spring Boot Anda, lihat artikel berikut ini: