Azure Container InstanceをLogic Appsでスケジューリングする方法

Azure Container InstanceをLogic Appsでスケジューリングする方法

最近Windows OSやAzureを触り始めました。
もともとLinuxやMacだったり、クラウドであればGCPやAWSを利用して開発していたのでなかなか慣れず、四苦八苦している今日この頃です。

さて、今回はAzureでDockerコンテナを定期実行する方法を紹介します。

クラウドでのDockerコンテナの定期実行は、AWSならCloud Watch、GCPならCloud Schedulerでノンコードで簡単に実装できますが、Azureでの事例はなかなか見つかりませんでした。
※Azure AutomationでPowerShellをゴリゴリ書く方法はありました。

そんな中、英文検索でしぶとく探しているとLogic Appsでお手軽にスケジューリングできるという記事を見つけました。

以降、上の記事を参考にLogic Appsを使ってAzure Container InstanceのDockerコンテナを定期実行する手順を説明していきます。

ちなみに今回ご紹介するのは、Dockerコンテナのバッチ処理フローにおけるContainer RegistoryからContainer InstanceにDockerイメージをpullし、コンテナを起動する部分(図の右側)です。

Azure CLIを使ったContainer RegistoryへのDockerイメージのpushについてはQiitaに書いているので興味あればご参照ください。

前提

  • Azureアカウントに登録済みであること
  • Azure Container RegistoryにDockerイメージを登録済みであること

やり方

Azure Portalにログインし、「Logic Apps」の管理画面に遷移します。

「Logic Apps」を作成します。

サブスクリプション、リソースグループ、リージョン等を設定し、作成します。


「Logic Apps」作成が終了すると、Logic Appsデザイナーを利用できるようになります。
トリガーとして「繰り返し」をクリックします。

定期実行したい間隔を入力し、「新しいステップ」をクリックします。

操作に「ACI」と入力し、「Azure コンテナーインスタンス」をクリックします。

「アクション」タブで「コンテナーグループのコンテナーを開始する」をクリックします。

するとサインインを求められます。
今回は既にContainer Instance実行用にサービスプリンシパルを作成しているので、サービスプリンシパルでログインします。
※サービスプリンパルを作成していない場合は通常のサインインで良いです。

コンテナ名、クライアントID(AppID)、クライアントシークレット(Password)、テナント(tenant)を入力し、「作成」をクリックします。

最後にこのロジックを保存することで自動化が完了します。
「開始」をクリックすることでテスト実行も可能です。

最後に

Logic Appsを使えばGUIでサクサクAzureのサービスを自動化できそうです。
また、Azure CLIでもLogic Appsを管理できるようなので、今度チャレンジしてみます。