【Azure Functions】外部設定ファイル参照方法 ServiceBusTriggerをJavaで作成
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
Azure Functions を使用し 外部設定ファイル参照 する。
外部設定ファイルを使用し、環境毎に設定を変更したい場合や簡単なテストをする時に、
外部ファイルのみ変更しテストの工数を減らすなど、ファイルを参照したいケースは多くあると思います。
今回は、Functionをデプロイする時に、外部設定ファイルも同時にデプロイし参照する方法の手順を説明していきます。
このページでは以下の内容を記載しています。
・Functions構成を把握
・Javaで作成したServiceBusTriggerで外部設定ファイルを読み込む
・ServiceBusTriggerのビルド・デプロイと外部設定ファイルの配置場所を確認
・動作確認
概要図
様々なサービスをつくる上でサンプルとして参考にして頂けると幸いです。
前提条件
・以下の構築後から設定を行っていく
「【Azure Functions】ServiceBusTriggerをJavaで作成しデプロイする」
Functions構成を把握する
Kuduを使用し、現状の構成を把握する
開発ツール > 高度なツール から移動してください。
今回はCMDを選択して確認する。
wwwroot>servicebus-trigger> このディレクトリに設定ファイルを配置しFunctionで読み込む様にする。
JavaのServiceBusTriggerアプリを改修する
外部設定ファイルを作成・設定する
「【Azure Functions】ServiceBusTriggerをJavaで作成しデプロイする」で作成したsample-functionをベースに改修を行う。
src > main 直下にresourcesフォルダを作成し、config.txtを外部設定ファイルとして作成する。
※作成場所や内容は任意に設定してください
pom.xml を編集する
ビルド・パッケージする時に、外部設定ファイルを指定の場所に含める様に編集する。
以下の様に、<アプリ名>/<トリガー名>/ 直下がKuduで確認したディレクトリになる。
※pom.xml抜粋
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<mkdir
dir="${project.build.directory}/azure-functions/${functionAppName}/servicebus-trigger/resources" />
<copy
todir="${project.build.directory}/azure-functions/${functionAppName}/servicebus-trigger/resources">
<fileset
file="${project.basedir}/src/main/resources/config.txt" />
</copy>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Function.java を修正する
Functionアプリで外部設定ファイルを読み込む。
今回はファイルを読み込んで、内容を出力するようにした。
package com.ms.az.functions.sample_function;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.ServiceBusQueueTrigger;
/**
* Azure Functions with ServiceBusTrigger.
*/
public class Function {
/**
* ServiceBusTrigger
* @param message
* @param context
*/
@FunctionName("servicebus-trigger")
public void run(
@ServiceBusQueueTrigger(
name = "message"
, queueName = "サービスバスのQueue名称"
, connection = "SERVICE_BUS_CONNECTIONSTRING") String message,
final ExecutionContext context) {
context.getLogger().info("ServiceBusTrigger start.");
String filePath="D:\\home\\site\\wwwroot\\servicebus-trigger\\resources\\config.txt";
Path path = Paths.get(filePath);
File file = path.toFile();
StringBuffer sbText= new StringBuffer();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8));){
String str;
while ((str = reader.readLine()) != null) {
sbText.append(str);
}
} catch (Exception e) {
e.printStackTrace();
}
//Out put message.
context.getLogger().info("QMessage="+message + ",Config=" + sbText.toString());
context.getLogger().info("ServiceBusTrigger end.");
}
}
※filePath="Function内のフルパスを設定";
ビルド・デプロイ後 外部設定ファイルの配置場所を確認する
アプリをビルド・デプロイする
以下のMavenコマンドでclean後、packageを行う。
mvn clean package
以下の様なpathに想定のファイルが存在する。
> target > azure-functions > sample-function01 > servicebus-trigger > resources > config.txt
AzureFunctionsにデプロイする。
mvn azure-functions:deploy
外部設定ファイルの配置場所を確認する
AzureポータルからAzureFunctionsのKuduを使用し、想定のディレクトリにファイルが存在するか確認する。
上記の様にconfig.txtがresourcesディレクトリ直下に配置されました。
動作確認を行う
想定のメッセージが出力されるか確認する
Functionsのログストリームを開いておく。
※ログが動的に出力されます
ServiceBusExplorerからQueueにメッセージを送信する。
メッセージ送信後、以下の様に、想定通りのログが出力され、外部設定ファイルを読み込んだ事が確認できる。
※Queueに入れた「0001」と外部設定ファイルの内容が出力されている
最後に/まとめ
今回、Azureのサーバーレス アーキテクチャ(PaaS)ベースで外部設定ファイルを扱う事ができました。
Kuduを使用し、ファイルを差し替える事で、再デプロイを行わなくてもFunctionの挙動変えることが可能です。
既存のオンプレミス環境やIaaS環境で外部設定ファイルを使用しているアプリケーションは数多く存在していると思います。
これらの環境からAzureFunctionsへ移行させたい場合に参考になれば幸いです。
また外部設定ファイルを別ロジックに置き換えて移行した方が良い場合もありますので、よくご検討下さい。
参考サイト:
【Azure Functions】ServiceBusTriggerをJavaで作成しデプロイする
正社員/フリーランスの方でこのようなお悩みありませんか?
- 自分に合う案件を定期的に紹介してもらいたい
- 週2、リモートワークなど自由な働き方をしてみたい
- 面倒な案件探し・契約周りは任せて仕事に集中したい
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート