Java Azure Blob Storage へファイルのアップロード No.69

自己投資としてチャレンジしている内容を Blog で公開しています。

今回は以前紹介した Java – Azure Blob Storage からファイルのダウンロード No.27 に関連して、ローカルで作成したファイルを Azure Blob Storage にアップロードする処理を Java の実装したいと思います。


▼1. Ubuntu の環境で Visual Studio Code を使って Java を実行します。

Visual Studio Code を使い Java を実行します。クラウドのストレージの一つである、Azure Blob Storage にアクセスし、ローカルで作成したファイルをアップロードします。OS は Ubuntu 20.04.2 LTS を利用しています。


▼2. 事前準備

2-1. Azure 無料サブスクリプションの準備等

こちらの手順を参考に Azure 無料サブスクリプションの用意など事前準備を行ってください。
(参考) Java – Azure Blob Storage からファイルのダウンロード No.27

2-2. Visual Studio Code のインストール

sudo snap install --classic code

(参考) https://code.visualstudio.com/docs/setup/linux

2-3. Maven のインストール

(参考) Apache Kafka Word Count 実装 – Java No.442-3. Apache Maven のインストール” の部分


▼3. ローカルで作成したファイルを Azure Blob Storage にアップロードするコード

3-1. ディレクトリの作成

アプリケーションを作成するため、ディレクトリを作成します。

mkidr uploadblob
cd uploadblob

3-2. Apache Maven によるプロジェクトを作成します。

mvn archetype:generate -DinteractiveMode=n -DgroupId=org.example.blob -DartifactId=uploadblob -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
(出力の一部)
xxxx
[INFO] -------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] -------------------------------------------------------------------
[INFO] Parameter: groupId, Value: org.example.blob
[INFO] Parameter: artifactId, Value: uploadblob
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: org.example.blob
[INFO] Parameter: packageInPathFormat, Value: org/example/blob
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: org.example.blob
[INFO] Parameter: groupId, Value: org.example.blob
[INFO] Parameter: artifactId, Value: uploadblob
[INFO] Project created from Archetype in dir: /home/xxx/uploadblob
[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] -------------------------------------------------------------------
[INFO] Total time:  3.034 s
[INFO] Finished at: 2022-11-07T08:23:06+09:00
[INFO] -------------------------------------------------------------------

3-3. デフォルトで作成された App.java および AppTest.java の削除します。

rm ./src/main/java/org/example/blob/App.java
rm ./src/test/java/org/example/blob/AppTest.java

3-4. Visual Studio Code を起動します。

code .

3-5. pom.xml に、blob storage 操作のための library を追記し保存 (Ctrl+S) します。

(参考) Quickstart: Azure Blob Storage client library for Java

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-blob</artifactId>
      <version>12.13.0</version>
    </dependency>
  </dependencies>

3-6. uploadfileblob.java を作成します。

connectStr の値は、Azure Portal から Azure Blob Storage の Access Keys で確認できる Connection string をコピー&ペーストします。

package org.example.blob;

import com.azure.storage.blob.*;
import java.io.*;


public class uploadfileblob {
    // upload files to azure blob storage
    public static void main(String[] args) {
        String connectStr ="DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=xxxxx==;EndpointSuffix=core.windows.net";
        String containerName = "files";
        String fileName = "sample.txt";
        String localPath = "/home/xxx/uploadblob";
                
        // Get a reference to a container        
        BlobServiceClient BlobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
        BlobContainerClient containerClinet = BlobServiceClient.getBlobContainerClient(containerName);
        
        // Write text to the file
        FileWriter writer = null;
        try{
            writer = new FileWriter("sample.txt");
            writer.write("Hello World!");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        BlobClient blobClient = containerClinet.getBlobClient(fileName);

        System.out.println("Uploading to Azure Blob storage as blob:\n\t" + blobClient.getBlobUrl());

        // Upload a file to the blob
        blobClient.uploadFromFile(localPath + "/" + fileName);

    }
}

3-7. 実行結果は以下となります。

(出力の一部)
xxx
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Uploading to Azure Blob storage as blob:
     https://xxx.blob.core.windows.net/files/sample.txt

Azure Portal の Azure Blob Storage にアクセスし、該当のコンテナーに sample.txt がアップロードされているか確認します。


▼4. 参考情報

1.  Java – Azure Blob Storage からファイルのダウンロード No.27
2.  VS Code のインストール https://code.visualstudio.com/docs/setup/linux
3. Quickstart: Azure Blob Storage client library for Java

以上です。参考になりましたら幸いです。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です