Azure Functions の PowerShell プレビューを使用したサーバーレス オートメーション

4月 29, 2019 に投稿済み

Principal Program Manager, Azure Functions

さまざまな規模の企業が資産とワークロードをクラウドに移行しているため、クラウド リソースを管理、制御、自動化するための一層強力な方法が明らかに必要とされています。このような自動化シナリオには、PowerShell で表現するのが最適なカスタム ロジックが必要になります。通常、これらは、スケジュールに基づいて実行されるか、アプリケーションでのアラート、新しいリソースの作成、外部システムで承認がなされた場合などのイベント発生時に実行されます。 

Azure Functions は、トリガーやバインドに基づくアプリケーション開発モデルを提供することにより、開発期間の短縮とアプリケーションのサーバーレス ホスティングを実現しているので、上記のようなシナリオに対処するのに最適です。Functions での PowerShell のサポートと、そのイベント ベースの機能を使用できようになることを希望する声を、ユーザーから数多くお寄せいただきました。

本日、Azure Functions で PowerShell のサポートがプレビュー リリースされ、このモデルの利点が Azure とオンプレミスのシステム全体の自動化操作タスクでご利用いただけるようになったことを発表いたします。

世界中の企業が、オンプレミスとクラウドの組織のリソースを自動化するために、これまで何年もの間 PowerShell を利用してきました。これらのシナリオの大半は、インフラストラクチャやアプリケーションで発生するイベントに基づくもので、サービス レベル アグリーメントと復旧時間を満たすため、迅速な処理が求められます。

Azure Functions で PowerShell のサポートがリリースされたことにより、これらの操作タスクを自動化し、ネイティブの Azure 統合を活用して、サービスの提供とメンテナンスを最新化することが可能になります。

Azure Functions での PowerShell のサポートは、2.x ランタイム上に構築されており、PowerShell Core 6 を使用するので、Windows、macOS、Linux のいずれでもオートメーションを開発できます。また、Azure Application Insights とネイティブに統合するので、それぞれの関数の実行状況を完全に視覚化できます。これまで Azure Functions は、1.x. で PowerShell を実験的にサポートしていましたが、1.x PowerShell 関数を最新のランタイムに移行することをお客様に強くお勧めします。

PowerShell 向けの Azure Functions のクイックスタート

Azure Functions の PowerShell は、次に示すような他の言語の長所もすべて備えています。

  • Azure 監視アラートや、リソース変更 (Event Grid、HTTP、タイマー トリガーによる) などに対応するためのネイティブ バインディング。
  • スクリプトの作成とテストのための、ポータルと Visual Studio Code の統合。
  • HTTP でトリガーされる関数を保護するための統合セキュリティ。
  • ハイブリッド環境の管理を支援するハイブリッド接続と VNet のサポート。
  • 分離されたローカル環境での実行。

さらに、PowerShell で記述された関数には次の機能があるので、自動化による Azure リソースの管理が一層容易になります。

Azure モジュールの自動管理

Azure モジュールはスクリプトでネイティブに使用できるので、作成する関数ごとにこれらのモジュールを含めなくても、Azure で使用できるサービスを管理できます。これらの Az モジュールの緊急更新プログラムとセキュリティ更新プログラムは、新しいマイナー バージョンがリリースされると、サービスによって自動的にアップグレードされます。

この機能は、host.json ファイルの managedDependency にある “Enabled” を true に設定し、Requirements.psd1 を更新して Az を含めれば有効にできます。これらは、PowerShell を使用して新しい関数アプリを作成すると自動的に設定されます。

host.json
{
    “version”:“2.0”,
    “managedDependency”: {
       “Enabled”: “true”
    }
}

Requirements.psd1
@{
    Az = ‘1.*’
}

Azure サービスに対する認証

関数アプリのマネージド ID を有効にすると、PowerShell ホストは、この ID を使用して自動的に認証を実行し、そのマネージド ID にアクセス権が付与されているサービスのアクションを実行する権限を関数に与えることができます。profile.ps1 は、関数アプリが開始され、一般的なコマンドを実行できるようになると処理されます。マネージド ID が有効な場合、既定で、関数アプリケーションは Connect-AzAccount -Identity で認証します。

関数アプリケーションは Connect-AzAccount -Identity で認証する

Azure の一般的な自動化シナリオ

PowerShell はタスクの自動化に適した言語です。これに Azure Functions の機能が加わることにより、お客様は Azure で実行されるサービスとアプリケーション全体に対して、イベント ベースのアクションをシームレスに作成することが可能になります。次に、一般的なシナリオの例を示します。

  • Azure Monitor と統合して、Azure サービスによって生成されるアラートを処理する。
  • Event Grid によってキャプチャされた Azure イベントに対応して、リソースに操作要件を適用する。
  • Logic Apps を活用して、PowerShell 関数でペイロードを処理しながら、IT サービスマネジメント、DevOps、監視システムなどの外部システムに接続する。
  • スケジュール化された操作タスクを、仮想マシン、SQL Server、Web アプリなどの Azure リソース上で実行する。

次のステップ

本日、Azure Functions での PowerShell のサポートがプレビューで提供開始されました。次のリソースを確認し、ぜひお試しください。

  1. Azure Functions で PowerShell を使用する方法について、クイック スタートや作業開始に役立つ一般的なサンプルなどを含んだドキュメントでさらに詳しく学習する。
  2. Azure の無料アカウントをまだお持ちでない場合はサインアップし、PowerShell を使って最初の関数を作成してみる。
  3. TwitterGitHub を通じて、Azure Functions チームにご連絡いただけます。PowerShell 言語に関する特定のフィードバックについては、その Azure Functions GitHub リポジトリをご確認ください。
  4. また、StackOverflowUserVoice も活発に確認していますので、ぜひご質問やご提案をお寄せください。皆様からのたくさんのご意見をお待ちしています!
  5. Functions での自動化と PowerShell について、Azure FridayMicrosoft Mechanics でさらに詳しく学習する。