自己投資としてチャレンジしている内容を 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.44 “2-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
以上です。参考になりましたら幸いです。