Dosyayı Azure Blob Depolama karşıya yükleme

Bu öğreticide, spring boot uygulamasından bir Azure Blob Depolama hesabındaki kapsayıcı bloblarını karşıya yükleme ve okuma işlemleri gösterilmektedir.

Azure Blob Depolama, Microsoft'un bulut için nesne depolama çözümüdür. Blob depolama, metin veya ikili veri gibi çok büyük miktarda yapılandırılmamış veriyi depolamak için iyileştirilmiştir.

Önkoşullar

  • Azure aboneliği - ücretsiz bir abonelik oluşturun.
  • Java Development Kit (JDK) sürüm 8 veya üzeri.
  • Apache Maven, sürüm 3.0 veya üzeri.
  • cURL veya işlevselliği test etmek için benzer bir HTTP yardımcı programı.
  • Azure depolama hesabı ve kapsayıcısı. Hesabınız yoksa bir depolama hesabı oluşturun.
  • Spring Boot uygulaması. Yoksa Spring Initializr ile bir Maven projesi oluşturun. Maven Projesi'ni seçtiğinizden ve Bağımlılıklar'ın altında Spring Web bağımlılığını eklediğinizden ve ardından Java sürüm 8 veya üzerini seçtiğinizden emin olun.

Not

Hesabınıza kaynaklara erişim vermek için, yeni oluşturduğunuz Azure Depolama hesabınızda rolü şu anda kullanmakta Storage Blob Data Contributor olduğunuz Microsoft Entra hesabına atayın. Daha fazla bilgi edinmek için bkz. Azure portal kullanarak Azure rolleri atama.

Önemli

Bu öğreticideki adımları tamamlamak için Spring Boot sürüm 2.5 veya üzeri gereklidir.

Kapsayıcı oluşturma

İlk olarak, Hızlı Başlangıç: Azure portalı ile blobları karşıya yükleme, indirme ve listeleme yönergelerini izleyerek adlı testcontainer bir kapsayıcı oluşturun.

Azure Depolama hesap kapsayıcısından blobları karşıya yükleme ve okuma

Artık bir Azure Depolama hesabınız ve kapsayıcınız olduğuna göre Spring Cloud Azure ile bloblardan dosyaları karşıya yükleyebilir ve okuyabilirsiniz.

Spring Cloud Azure Depolama Blob Starter modülünü yüklemek için pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:

  • Spring Cloud Azure Ürün Reçetesi (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>
    

    Not

    Spring Boot 2.x kullanıyorsanız, sürümünü olarak 4.17.0ayarladığınızdan spring-cloud-azure-dependencies emin olun. Bu Ürün Reçetesi (BOM), pom.xml dosyanızın bölümünde yapılandırılmalıdır<dependencyManagement>. Bu, tüm Spring Cloud Azure bağımlılıklarının aynı sürümü kullanmasını sağlar. Bu ürün reçetesi için kullanılan sürüm hakkında daha fazla bilgi için bkz . Spring Cloud Azure'ın Hangi Sürümünü Kullanmalıyım.

  • Spring Cloud Azure Depolama Blob Starter yapıtı:

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

Uygulamayı kodlama

Spring Cloud Azure Depolama Blob başlatıcısını kullanarak bloblardan dosya yüklemek ve okumak için aşağıdaki adımları kullanarak uygulamayı yapılandırın.

  1. Aşağıdaki örnekte gösterildiği gibi application.properties yapılandırma dosyasında bir Depolama hesap adı ve uç noktası yapılandırın.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Aşağıdaki örnekte gösterildiği gibi yeni BlobController bir Java sınıfı oluşturun. Bu sınıf, Azure Depolama hesabındaki kapsayıcı blobundan dosyaları karşıya yüklemek ve okumak için kullanılır.

    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";
        }
    }
    

    İpucu

    Bu öğreticide yapılandırmalarda veya kodda kimlik doğrulama işlemi yoktur. Ancak Azure hizmetlerine bağlanmak için kimlik doğrulaması gerekir. Kimlik doğrulamasını tamamlamak için Azure Identity kullanmanız gerekir. Spring Cloud Azure, azure kimlik kitaplığının herhangi bir kod değişikliği yapmadan kimlik bilgilerini almanıza yardımcı olmak için sağladığı öğesini kullanır DefaultAzureCredential.

    DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim ortamları gibi) farklı kimlik doğrulama yöntemleri kullanmasını sağlar. Daha fazla bilgi için bkz . DefaultAzureCredential.

    Yerel geliştirme ortamlarında kimlik doğrulamasını tamamlamak için Azure CLI, Visual Studio Code, PowerShell veya diğer yöntemleri kullanabilirsiniz. Daha fazla bilgi için bkz . Java geliştirme ortamlarında Azure kimlik doğrulaması. Azure barındırma ortamlarında kimlik doğrulamasını tamamlamak için kullanıcı tarafından atanan yönetilen kimliği kullanmanızı öneririz. Daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler nelerdir?

  3. Uygulamanız çalıştırıldıktan sonra aşağıdaki adımları izleyerek uygulamanızı test etmek için kullanın curl .

    1. Aşağıdaki komutu kullanarak dosyanın içeriğini güncelleştirmek için post isteği gönderin:

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

      ifadesini file was updatediçeren bir yanıt görmeniz gerekir.

    2. Aşağıdaki komutu kullanarak dosyanın içeriğini doğrulamak için bir GET isteği gönderin:

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

      Gönderdiğiniz "yeni ileti" metnini görmeniz gerekir.

Azure Spring Apps'e dağıtma

Spring Boot uygulamasını yerel olarak çalıştırdığınıza göre artık uygulamayı üretim ortamına taşımanın zamanı geldi. Azure Spring Apps , kod değişikliği yapmadan Spring Boot uygulamalarını Azure'a dağıtmayı kolaylaştırır. Hizmet, geliştiricilerin kodlarına odaklanabilmesi için Spring uygulamalarının altyapısını yönetir. Azure Spring Apps kapsamlı izleme ve tanılama, yapılandırma yönetimi, hizmet bulma, CI/CD tümleştirmesi, mavi-yeşil dağıtımlar ve daha fazlasını kullanarak yaşam döngüsü yönetimi sağlar. Uygulamanızı Azure Spring Apps'e dağıtmak için bkz . İlk uygulamanızı Azure Spring Apps'e dağıtma.

Sonraki adımlar

Spring ve Azure hakkında daha fazlasını öğrenmek için Azure’da Spring belge merkezinde çalışmaya devam edin.

Ayrıca bkz.

Microsoft Azure için kullanılabilen ek Spring Boot Starter'lar hakkında daha fazla bilgi için bkz . Spring Cloud Azure nedir?

Spring Boot uygulamalarınızdan çağırabileceğiniz ek Azure depolama API'leri hakkında daha fazla bilgi için aşağıdaki makalelere bakın: