Azure Storage

Azure FunctionsでAzure Blob Storageのコンテナー内にファイルを格納してみた

前回、Azure Blob Storageのコンテナー内にファイルを格納するプログラムを作成したが、その処理は、App Serviceのコントローラメソッド内で実施していた。

今回は、Azure Blob Storageのコンテナー内にファイルを格納する処理をAzure Functions内で実施してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

Azure Blob Storageのコンテナー内にファイルを格納するプログラムを作成してみた以前、JavaでSpring Bootフレームワークを利用してファイルをアップロードするプログラムを作成したことがあったが、ファイルのア...
Azure Functions上でSpring Bootを利用したJavaアプリケーションを作成してみた前回は、Azure Potal上でAzure Functionsを作成してみたが、今回は、前回作成したAzure FunctionsにS...

作成したサンプルプログラム(App Service側)の内容

作成したサンプルプログラム(App Service側)の構成は以下の通り。
サンプルプログラムの構成(AppService)
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。

コントローラクラスの内容は以下の通りで、後述のファイルアップロードを行うFunctionの呼び出しを行っている。その際、ファイルデータはバイト配列(byte[])に変換して送っている。



また、pom.xmlの内容は以下の通りで、ファイルデータをバイト配列に変換する際に利用するcommons-ioを定義している。

上記以外のJavaクラス、プロパティファイルの内容は以下の通り。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/azure-blob-storage-functions/demoAzureApp



作成したサンプルプログラム(Azure Functions側)の内容

作成したサンプルプログラム(Azure Functions側)の構成は以下の通り。
サンプルプログラムの構成(AzureFunctions側)
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。

<2021年4月13日 追記>
spring-cloud-function-dependenciesのバージョンは、2021年3月16日にリリースしたバージョン3.1.2を利用すると、1つのAzure Functions内に複数のファンクションを含む場合の不具合が解消できている。


その場合、Handlerクラスの継承するクラスを「AzureSpringBootRequestHandler」クラスから「FunctionInvoker」クラスに変更する。


spring-cloud-function-dependenciesの3.1.2を利用した実装サンプルは、以下の記事を参照のこと。

spring-cloud-function-dependenciesのバージョンを最新(3.1.2)にしてみたこれまでこのブログで取り上げてきたAzure Functionsのサンプルプログラムでは、spring-cloud-function-d...

pom.xmlの内容は以下の通りで、Azure Storageにアクセスするための設定を追加している。

application.propertiesの内容は以下の通りで、Azure Storageにアクセスするためのアカウント名・アクセスキー・コンテナー名を追加している。
application_properties



ファイルアップロードサービスの内容は以下の通りで、ファイルアップロード処理を行っている。

さらに、ファイルアップロードサービスのfileUploadメソッドの引数・戻り値は以下のクラスで定義している。なお、引数のファイルデータはバイト配列(byte[])になっている。

また、メインクラスとハンドラークラスの内容は、以下の通り。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/azure-blob-storage-functions/demoAzureFunc

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、下記記事と同じになる。

Azure Blob Storageのコンテナー内にファイルを格納するプログラムを作成してみた以前、JavaでSpring Bootフレームワークを利用してファイルをアップロードするプログラムを作成したことがあったが、ファイルのア...

要点まとめ

  • Azure Blob Storageのコンテナー内にファイルを格納する処理は、Azure Functions内でも実施できる。
  • Azure Functionsにファイルデータを送信するには、バイト配列(byte[])に変換して送信すればよい。