Azure Developer CLI (azd) 拡張機能は、新しいコマンドを追加し、ワークフローを自動化し、他のサービスをazdと統合します。 この記事では、開発者ツール、ソフトウェア開発キット (SDK)、実行中の拡張機能と通信する方法など、拡張機能をビルドする前に理解 azd 必要がある概念について説明します。 ユーザーの観点から見た拡張機能の概要については、 拡張機能の概要を参照してください。
Note
azd拡張機能フレームワークは一般提供されています。 個々の拡張機能または機能には、独自のプレビュー状態がある場合があります。
開発者拡張機能
拡張機能を構築する最も速い方法は、 azd 開発者拡張機能 (microsoft.azd.extensions) を使用する方法です。 開発者拡張機能は、拡張機能のスキャフォールディング、ビルド、パッケージ化、発行を行う一連のコマンドを azd x 名前空間の下に追加します。
| 命令 | Description |
|---|---|
azd x init |
選択した言語で新しい拡張プロジェクトをスキャフォールディングします。 |
azd x build |
ローカル開発用の拡張バイナリをビルドします。 |
azd x watch |
プロジェクトの変更を監視し、拡張機能を自動的に再構築してインストールします。 |
azd x pack |
公開の準備のために拡張機能成果物をパッケージ化します。 |
azd x release |
拡張機能のGitHub リリースを作成します。 |
azd x publish |
拡張機能レジストリを新しい拡張機能メタデータで更新します。 |
「 拡張機能のサンプルのビルド」クイック スタート では、開発者拡張機能をインストールし、最初の拡張機能をスキャフォールディングする方法を示します。
開発者拡張機能は、レジストリ ベースの発行ワークフローとポータブル バンドル配布をサポートします。
azd x packを使用して、リリースおよびレジストリパブリケーション用のプラットフォーム成果物を作成するか、レジストリをホストせずに拡張機能を共有する必要がある場合は自己完結型の.zipバンドルを作成します。 詳細なガイダンスについては、「 拡張機能を発行する」を参照してください。
拡張機能フレームワークと gRPC
azd と拡張機能は 、gRPC を介して通信する個別のプロセスとして実行されます。 拡張機能コマンドを呼び出すと、次の手順が実行されます。
-
azdは、ランダム ポートで gRPC サーバーを起動し、AZD_SERVER環境変数にサーバー アドレスを設定します。 -
azdは、AZD_ACCESS_TOKEN環境変数を設定します。これは、コマンドの有効期間中、azdサービスへの拡張機能アクセスを許可する署名付き JSON Web トークン (JWT) です。 -
azdは拡張機能コマンドを呼び出し、現在の引数、フラグ、環境変数を渡します。 - 拡張機能では、gRPC クライアントを使用して、ユーザーのプロンプトやプロジェクト構成の読み取りなど、フレームワーク サービスを介して
azdに通信します。 -
azdは、コマンドが完了するのを待機し、0 以外の終了コードをエラーとして報告します。
このモデルにより、拡張機能は、内部azd状態に直接アクセスすることなく、一貫性のある安全な方法でazdと対話できます。
Project レベルの拡張機能の要件
プロジェクトでは、必要な拡張機能を azure.yamlで宣言できます。
requiredVersions.extensionsセクションを使用して、プロジェクトを満たすバージョンazd解決できるように、拡張機能 ID とバージョン制約を一覧表示します。
requiredVersions:
extensions:
azure.ai.agents: ">=1.0.0"
contoso.azd.tagger: "^2.0.0"
プロジェクトが拡張機能提供のホスト、プロバイダー、ライフサイクル ハンドラー、検証、またはコマンドに依存している場合に、必要な拡張機能を宣言します。 正確なスキーマとサポートされているバージョンの構文については、 requiredVersionsを参照してください。
The azdext SDK
azdext パッケージは、拡張機能フレームワーク用の Go SDK です。 通信の詳細を処理する gRPC クライアントとヘルパーが用意されているため、拡張機能ロジックに集中できます。 SDK には、次のヘルパーが含まれています。
- 標準の
azdフラグと環境変数の処理を登録するルート コマンドをビルドします。 -
azdアクセス トークンを送信要求にアタッチします。 - Project、環境、アカウント、プロンプト サービスなどの
azdフレームワーク サービスを呼び出します。 - 拡張機能ホストを使用して、ライフサイクル イベント ハンドラーとカスタム プロバイダーを登録します。
拡張機能から azd サービスを呼び出す方法については、「SDK を 使用して azd と通信する」を参照してください。
拡張機能でできること
Capabilities は、拡張機能で何ができるかを定義します。 拡張機能の機能を extension.yaml マニフェストに一覧表示し、実行時に対応するアクセス許可を付与 azd 。 使用可能な機能は次のとおりです。
-
custom-commands: 新しいコマンド グループとコマンドをazdに追加します。 -
lifecycle-events:preprovisionやpostdeployなどのプロジェクトおよびサービス ライフサイクル イベントをサブスクライブします。 -
mcp-server: AI エージェント用のモデル コンテキスト プロトコル (MCP) ツールを提供します。 -
service-target-provider: カスタム サービスのデプロイ ターゲットを指定します。 -
framework-service-provider: カスタム言語とフレームワークビルドのサポートを提供します。 -
provisioning-provider: カスタム インフラストラクチャ プロビジョニング エクスペリエンスを提供します。 -
validation-provider: 検証チェックをazd検証パイプラインに投稿します。 -
metadata: ヘルプ出力と IntelliSense の豊富なコマンドと構成メタデータを提供します。
拡張機能に機能を追加する方法については、「拡張機能の 追加」を参照してください。
サポートされている言語
gRPC をサポートする任意の言語で azd 拡張機能を構築でき、 azd x init には複数の言語のスターター テンプレートが含まれています。 Go には、ファースト クラスの azdext SDK ヘルパーを含む、最も完全なサポートがあるため、このセクションの記事では、すべての例で Go を使用します。
| Language | サポート レベル |
|---|---|
| Go | 最適なサポートとファースト クラスの SDK ヘルパー。 |
| .NET (C#) | スターター テンプレートとの強力な統合。 |
| Python | スターター テンプレートとの適切な統合。 |
| JavaScript | スターター テンプレートとの基本的な統合。 |
Go 以外の言語で作成された拡張機能の場合は、 リポジトリ内の azure/azure-devから gRPC クライアントを生成できます。 言語サポートの現在の状態については、アップストリーム拡張機能 フレームワークのドキュメントを参照してください。
拡張機能レジストリ
拡張機能は、拡張機能ソースを通じて配布します。 拡張ソースは、使用可能な拡張機能とその成果物を記述する URL ベースまたはファイル ベースのマニフェストです。
azd レジストリをホストしない場合は、直接インストール用のポータブル バンドル ファイルもサポートされます。
-
公式レジストリは
azdで事前に構成されており、ファースト パーティの拡張機能を検証してホストします。 公式の拡張機能は、 azure/azure-dev リポジトリのフォークで開発されています。 - URL ベースのソース を使用すると、リモートのパブリックレジストリマニフェストまたはプライベートレジストリマニフェストからインストールできます。
- ファイル ベースのソース を使用すると、開発、テスト、またはオフラインのシナリオでローカル レジストリ マニフェストからインストールできます。
- 開発レジストリと夜間レジストリは、進行中の作業用のオプトイン ソースであり、ファースト パーティの拡張機能を自動的に構築します。 開発レジストリ内の拡張機能は署名されておらず、Azure サポートの対象外であり、予告なしに変更または削除される可能性があります。
拡張機能をレジストリに発行する方法については、「拡張機能を 発行する」を参照してください。