次の方法で共有


チュートリアル: Aspire プロジェクトを Azure Developer CLI を使用してデプロイする

Azure Developer CLI (azd) を使用すると、必要な認証と環境設定を自動的に構成することで、Aspire Actions または GitHub Devops パイプラインを使用して、Azure プロジェクトをデプロイできます。 この記事では、Aspireを使用してAzure Container Appsにazd プロジェクトを作成して展開するプロセスについて説明します。 次の概念について学習します。

  • azdとの統合がAspireプロジェクトでどのように機能するかを調べる
  • GitHubを使用して、Azure プロジェクトのためにAspireまたはazd DevOps リポジトリを作成および構成します。
  • GitHub Actions ワークフローや Azure DevOps パイプラインの実行、および Azure デプロイを監視し調査する

[前提条件]

Aspireを使用するには、次のものがローカルにインストールされている必要があります。

詳細については、Aspireセットアップとツール、および SDK のAspireに関する説明を参照してください。

  • Azure DevOps 組織を作成、または既存の組織を選択する
  • Azure DevOps Personal Access Token (PAT) を作成し、後で使用するために保存します。 次のアクセス許可を使用してトークンを構成します。
    • エージェント プール (読み取り、管理)
    • ビルド (データの読み取りと実行)
    • コード(完全)
    • プロジェクトとチーム (読み取り、書き込み、管理)
    • リリース (読み取り、書き込み、実行、管理)
    • サービス接続 (読み取り、クエリ、管理)

また、Azure Developer CLIをローカル (バージョン 1.5.1 以降) にインストールする必要があります。 一般的なインストール オプションは次のとおりです。

winget install microsoft.azd

Aspire ソリューションを作成する

出発点として、この記事では、AspireAspire テンプレートから ソリューションを作成していることを前提としています。 詳細については、「 クイック スタート: 初めての Aspire アプリをビルドする」を参照してください。

テンプレートを初期化する

  1. 新しいターミナルウィンドウを開き、cdして、ソリューションのディレクトリに移動します。

  2. azd init コマンドを実行して、azdを使用してプロジェクトを初期化します。このコマンドにより、ローカル ディレクトリ構造が検査され、アプリの種類が決定されます。

    azd init
    

    コマンドの詳細については、azd init参照してください。

  3. が 3 つのアプリ初期化オプションを求められたら、azd[現在のディレクトリのコードを使用する] を選択します。

    ? How do you want to initialize your app?  [Use arrows to move, type to filter]
    > Use code in the current directory
      Select a template
      Create a minimal project
    
  4. ディレクトリをスキャンした後、 azd 正しい AspireAppHost プロジェクトが見つかったことを確認するメッセージが表示されます。 [確認] を選択し、アプリを初期化するオプションを続行します。

    Detected services:
    
      .NET (Aspire)
      Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj
    
    azd will generate the files necessary to host your app on Azure using Azure Container Apps.
    
    ? Select an option  [Use arrows to move, type to filter]
    > Confirm and continue initializing my app
      Cancel and exit
    
  5. 環境名を入力します。これは、Azure でプロビジョニングされたリソースに名前を付け、devprodなどのさまざまな環境を管理するために使用します。

    Generating files to run your app on Azure:
    
      (✓) Done: Generating ./azure.yaml
      (✓) Done: Generating ./next-steps.md
    
    SUCCESS: Your app is ready for the cloud!
    You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
    

azd は、多数のファイルを生成し、作業ディレクトリに配置します。 これらのファイルは次のとおりです。

  • azure.yaml: AppHost プロジェクトなどのアプリのサービス Aspire について説明し、それらを Azure リソースにマップします。
  • .azure/config.json: 現在のアクティブな環境が何であるかを azd 通知する構成ファイル。
  • .azure/aspireazddev/.env: 環境固有のオーバーライドが含まれています。

GitHub リポジトリとパイプラインを作成する

Azure Developer CLI を使用すると、リソースをプロビジョニングして Azureにデプロイするための適切な構成とアクセス許可を持つ CI/CD パイプラインを自動的に作成できます。 azd アプリの GitHub リポジトリがまだ存在しない場合は作成することもできます。

  1. azd pipeline config コマンドを実行してデプロイ パイプラインを構成し、Azureに安全に接続します。

    azd pipeline config
    
  2. アプリ リソースをプロビジョニングしてデプロイするサブスクリプションを選択します。

  3. リソースに使用する Azure の場所を選択します。

  4. ディレクトリに新しい リポジトリを作成するかどうかを確認するメッセージが表示されたら、「y」と入力し、Enterキー 押します。

    GitHub リポジトリを作成するには、GitHubにログインする必要があります。 好みに応じて異なるいくつかの選択肢があります。 ログインすると、現在のディレクトリに新しいリポジトリを作成するように求められます。

  5. 新しいプライベート GitHub リポジトリ を作成を選択して、git リモートを構成します。

  6. 新しい GitHub リポジトリに任意の名前を入力するか、Enter キーを押して既定の名前を使用します。 azd GitHub に新しいリポジトリを作成し、Azureに対する認証に必要なシークレットを使用して構成します。

    パイプラインの構成手順を示すスクリーンショット。

  7. y を入力して、ローカルの変更をコミットしてプッシュし、構成されたパイプラインを開始するように求めるメッセージ azd が表示されたら続行します。

GitHub アクションのワークフローとデプロイを調べる

  1. GitHubのリンク出力を使用して、新しい azd リポジトリに移動します。

  2. アクション タブを選択して、リポジトリ ワークフローを表示します。 新しいワークフローが実行されているか、既に完了していることがわかります。 ワークフローを選択して、実行のログにジョブ ステップと詳細を表示します。 たとえば、 アプリケーションのデプロイ などの手順を展開して、完了したアクションの詳細を表示できます。

    GitHub アクションワークフローステップを示すスクリーンショット。

  3. [アプリケーション展開] を選択して、その手順のログを展開します。 apiservicewebfrontendの 2 つのエンドポイント URL が出力されます。 これらのリンクのいずれかを選択して別のブラウザー タブで開き、デプロイされたアプリケーションを調べる。

    デプロイされたアプリのリンクを示すスクリーンショット。

おめでとうございます! AspireアクションとAzure Developer CLIアクションを使用して、GitHub プロジェクトを正常にデプロイしました。

マルチプロジェクト ソリューションの作業ディレクトリを構成する

AppHost プロジェクトがルート ディレクトリにない既存のマルチプロジェクト GitHub ソリューションに Aspire Actions を追加する場合は、特定のワークフロー ステップに対して working-directory パラメーターの構成が必要になる場合があります。 このセクションでは、これらの調整のタイミングと方法について説明します。

作業ディレクトリの構成が必要な場合

azd pipeline config コマンドは、GitHub AppHost プロジェクトがリポジトリのルート ディレクトリにあることを前提とするAspire Actions ワークフローを生成します。 ただし、多くの実際のシナリオでは、特に 既存のアプリケーションに Aspire を追加する場合は、AppHost プロジェクトがサブディレクトリ内にある可能性があります。

たとえば、リポジトリの構造が次のようになります。

└───📂 MyAspireApp
    ├───📂 MyAspireApp.ApiService
    ├───📂 MyAspireApp.AppHost
    │    ├─── MyAspireApp.AppHost.csproj
    │    └─── AppHost.cs
    ├───📂 MyAspireApp.Web
    └─── MyAspireApp.sln

インフラストラクチャのプロビジョニングアプリケーションのデプロイに関して生成されたワークフロー ステップは、リポジトリ ルートではなく、MyAspireApp.AppHost ディレクトリから実行する必要があります。

GitHub アクション ワークフローの更新

azd pipeline configを実行した後、.github/workflows/azure-dev.ymlで生成されたワークフロー ファイルを調べます。 azdコマンドを実行する手順を探し、必要に応じて working-directory パラメーターを追加します。

生成された元の手順の例を次に示します。

- name: Provision Infrastructure
  run: azd provision --no-prompt
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Deploy Application
  run: azd deploy --no-prompt
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

次の手順を更新して、 working-directory パラメーターを含めます。

- name: Provision Infrastructure
  run: azd provision --no-prompt
  working-directory: ./MyAspireApp.AppHost
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Deploy Application
  run: azd deploy --no-prompt
  working-directory: ./MyAspireApp.AppHost
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

正しい作業ディレクトリを見つける

作業ディレクトリは、Aspire AppHost プロジェクト ( によって生成された azd init ファイルを含むプロジェクト) を含むフォルダーを指す必要があります。 このディレクトリは、次の方法で識別できます。

  1. Aspire.AppHost ファイルで、.csproj パッケージ参照を含むプロジェクトを探します。
  2. azure.yaml ファイルを含むディレクトリを見つけます。
  3. 他のサービスを調整するソリューションで参照されているプロジェクトを見つけます。

パイプラインのセットアップ中にazdなどの一部のazd initコマンドは、AppHost プロジェクト ディレクトリから実行されていない場合は、working-directory パラメーターも必要になる場合があります。

Azure DevOps リポジトリとパイプラインを作成する

Important

前提条件で説明したように、 DevOps 組織 作成 するか、既存の組織を選択して手順を完了する必要があります。 また、前提条件に記載されているアクセス許可を使用して、個人用アクセス トークン (PAT) を作成 必要があります。

Azure Developer CLI を使用すると、リソースをプロビジョニングして Azureにデプロイするための適切な構成とアクセス許可を持つパイプラインを自動的に作成できます。 azd アプリ用の Azure Pipelines リポジトリがまだ存在しない場合は作成することもできます。

  1. azd pipeline config コマンドを実行してデプロイ パイプラインを構成し、Azureに安全に接続します。 既定の --provider azdo Actions 構成ではなく、Azure Pipelines を使用する GitHub オプションを含めます。

    azd pipeline config --provider azdo
    

    Important

    azd pipeline configを実行する前に、azd initを正常に実行してプロジェクトを初期化していることを確認してください。 パイプラインの実行中に "プロジェクトが存在しない" などのエラーが発生した場合は、 ソリューションのトラブルシューティングのセクションを 参照してください。

  2. アプリ リソースをプロビジョニングしてデプロイするサブスクリプションを選択します。

  3. リソースに使用する Azure の場所を選択します。

  4. 先ほど作成した個人用アクセス トークンを貼り付けます。

  5. 作成または選択した Azure DevOps 組織名を入力します。

  6. 現在のディレクトリに新しいリポジトリを作成するように求められたら、「y」と入力し、Enterキー 押します。

  7. git リモートを構成するように求められたら、「新しい Azure DevOps プロジェクトを作成する」を選択します。

  8. aspireazdなど、新しいリポジトリに対して選択した一意の名前を入力します。 azd、Azure Repos に新しいリポジトリを作成し、Azureに対する認証に必要なシークレットを使用して構成します。

    パイプラインの構成手順を示すスクリーンショット。

  9. y を入力して、ローカルの変更をコミットしてプッシュし、構成されたパイプラインを開始するように求めるメッセージ azd が表示されたら続行します。

パイプラインとデプロイされたアプリを調べる

  1. Azureによる状態リンク出力を使用して、新しい azd パイプラインに移動します。

    Azure Pipelines の正常な実行を示すスクリーンショット。

  2. 完了したパイプライン実行を選択して、概要を表示します。

    Azure Pipelines の実行の概要ビューを示すスクリーンショット。

  3. ビューの下部にあるジョブ リンクを選択して、ジョブの詳細に移動します。

    Azure Pipelines の実行の詳細ビューを示すスクリーンショット。

  4. ジョブの詳細ページには、個々のすべてのステージの状態が表示されます。 プロビジョニング インフラストラクチャ を選択すると、そのステージのログが表示されます。このログには、azdによって完了したすべてのプロビジョニング手順が詳しく示されます。 ログの下部で、最終的な状態メッセージをメモし、プロビジョニングされた Azure リソース グループにリンクします。

  5. プロビジョニング出力ログの下部にあるリンクを選択して、新しい Azure リソース グループに移動します。

    デプロイされた Azure リソースを示すスクリーンショット。

    Azure ポータルで検索して、新しいリソース グループに直接移動することもできます。 リソース グループ名は、azd に指定した環境名の前に rg-を付けたものになります。

  6. webfrontend コンテナー アプリを選択します。コンテナー アプリは、サイトの公開部分をホストします。

  7. Webfrontend の詳細ページで、アプリケーション URL リンクを選択して、ブラウザーでサイトを開きます。

Important

ブラウザーでサイトを表示するときに 403 Forbidden エラーが発生した場合は、イングレス設定が正しく構成されていることを確認します。 ポータルの Azure アプリ ページで、左側のナビゲーションの イングレス に移動します。 イグレス トラフィック任意の場所からのトラフィックを受け入れるに設定されていることを確認し、変更を保存します。

おめでとうございます! Aspire と Azure Developer CLI Pipelines を使用して、Azure プロジェクトを正常にデプロイしました。

トラブルシューティング Azure DevOps パイプラインのデプロイ

このセクションでは、Aspire DevOps パイプラインを使用してAzure プロジェクトをデプロイするときに発生する可能性がある一般的な問題について説明します。

エラー: プロジェクトが存在しません。新しいプロジェクトを作成するには、azd init を実行します

問題: Azure DevOps パイプラインのプロビジョニング手順中に、次のエラー メッセージが表示されます。

ERROR: no project exists; to create a new project, run azd init

原因: このエラーは、通常はリポジトリにコミットされていないファイル (azd initazure.yaml フォルダー) が .azure コマンドによって生成されるために発生します。 パイプラインがクリーンな環境で実行されている場合、これらのファイルは存在しないため、 azd コマンドが失敗します。

解決策: この問題を解決するには、いくつかの方法があります。

プロビジョニング手順の前に、 azd init ステップを Azure DevOps パイプラインに追加します。 --from-codeフラグと--no-prompt フラグを使用して、コマンドを非対話形式で実行できます。

- task: AzureCLI@2
  displayName: 'Initialize Azure Developer CLI'
  inputs:
    azureSubscription: '$(AZURE_SERVICE_CONNECTION)'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      azd init --from-code --no-prompt
      azd env new $(AZURE_ENV_NAME) --location $(AZURE_LOCATION) --subscription $(AZURE_SUBSCRIPTION_ID)

--no-promptでもプロンプトが表示される場合は、別の手順としてazd initazd env newを実行するか、環境変数を使用してプロンプトに対する回答を提供してください。 --from-code フラグは、テンプレートから新しいプロジェクトを作成するのではなく、現在のディレクトリ内の既存のコードを使用するように azd に指示します。

パイプラインで次の変数を定義してください。

  • AZURE_ENV_NAME: 環境名 ( devprodなど)。
  • AZURE_LOCATION: Azure リージョン (たとえば、 eastus2)。
  • AZURE_SUBSCRIPTION_ID: Azure サブスクリプション ID。

オプション 2: 必要なファイルをリポジトリにコミットする

生成されたファイルをリポジトリにコミットする場合:

  1. プロジェクト ディレクトリ azd init ローカルで実行します。
  2. 生成された azure.yaml ファイルをリポジトリに追加します。
  3. 必要に応じて、環境固有の設定を保持する場合は、 .azure フォルダーをリポジトリに追加します。

.azure フォルダーには、機密情報を含む環境固有の構成が含まれています。 リポジトリにコミットする前に、内容を慎重に確認してください。

オプション 3: 適切な初期化で azd パイプライン構成を使用する

azd pipeline config --provider azdoが正常にローカルで実行された後、azd initを実行していることを確認します。 このコマンドは、初期化を自動的に処理する正しい構成でパイプラインを設定する必要があります。

問題が引き続き発生する場合は、次のことを確認します。

  • あなたのプロジェクト構造は、azd が期待するAspire プロジェクトのものと一致します。
  • 正しいディレクトリ (通常、 .sln ファイルがある場所) からコマンドを実行しています。
  • Azure DevOps サービス接続には、リソースをプロビジョニングするために必要なアクセス許可があります。

リソースをクリーンアップする

作成した Azure リソースが不要になったら、次の Azure CLI コマンドを実行してリソース グループを削除します。 リソース グループを削除すると、その中に含まれるリソースも削除されます。

az group delete --name <your-resource-group-name>

詳細については、「リソースをクリーンアップする」をAzureで参照してください。