LoginSignup
0
1

More than 5 years have passed since last update.

Azure Functions (Java) でデプロイメントスロットを使ってスワップする

Posted at

Functions(Java)は mvn azure-functions:deploy コマンドでデプロイします。
本番用のFunctionsにいきなりデプロイされちゃうので、一度ステージング用のスロットにデプロイして、問題ないか確認して、スワップ(リリース)というやり方ができないか検討しました。

現時点では、azure-maven-pluginsがデプロイメントスロットに対応していないため、mvnコマンドで他のスロットにデプロイすることはできませんでした。
代替策として、zipファイルをazコマンドでアップロードするやり方でうまくいったので手順を残しておきます。

ちなみに、FunctionsのJavaはGAされましたが、デプロイメントスロットはプレビュー機能です。

Functionsを準備する

デプロイメントスロットを準備する

  • 該当のFunctionsを選択して、スロットの+ボタンを選択します。

    image.png

  • 任意のスロット名を入力して作成します。

    image.png

  • スロットが追加されます。これで準備OKです。

    image.png

コードを修正してzipファイルを準備する

  • サンプルプログラムを修正します。今回は Hello, Java と表示されるところを、 Staging, Java と表示されるように変更しました。
  • mvn clean package コマンドを実行します。
  • target/azure-functions/[Function App Name]/ フォルダに移動すると、jarファイルやjsonファイルがあるので、local.settings.json以外の全てのフォルダやファイルを選択して、zipファイルにします。
    ここもうちょっといいやり方があれば教えてください・・・

AZコマンドでZipファイルをデプロイする

  • 以下のコマンドを実行してZipファイルをデプロイします。
az webapp deployment source config-zip -g [リソースグループ名] -n [Functionアプリ名] --slot [Slot名] --src [zipファイル名]
  • 動作確認しておきます。 それぞれアクセスすると以下のような結果になります。
    • 本番環境 https://[Function App Name]/api/HttpTrigger-Java?name=java
      • 出力結果 Hello, java
    • ステージング環境 https://[Function App Name]-stg.azurewebsites.net/api/HttpTrigger-Java?name=java
      • 出力結果 Staging, java

本番とステージングをスワップする

  • stgスロットの[スワップ]を選択します。

    image.png

  • ソースがstg、ターゲットが本番用になっていることを確認して[スワップ]ボタンを押します。

    image.png

  • 動作確認します。 先程の結果とは逆になっていれば問題なくスワップできています。

    • 本番環境 https://[Function App Name]/api/HttpTrigger-Java?name=java
      • 出力結果 Staging, java
    • ステージング環境 https://[Function App Name]-stg.azurewebsites.net/api/HttpTrigger-Java?name=java
      • 出力結果 Hello, java

まとめ

手動でやるのはめんどくさいですね。
CIにのせたりして自動化させないと厳しそうです。
今後mavenプラグインでスロットにデプロイできるようになることに期待します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1