既存のテンプレートを使用して Azure Developer CLI のサポートをアプリに追加する

Azure Developer CLI (azd) には、アプリで使用するテンプレートを初期化するための次の 2 つの異なるワークフローが用意されています。

  • 現在のディレクトリでコードを使用する: この方法では、アプリを分析し、サポートされているインフラストラクチャと構成リソースを自動生成します。
  • テンプレートを選択: この方法では、既存のテンプレートをアプリと統合したり、既存のテンプレートを新しいアプリの開始点として使用したりできます。

どちらの方法も、 Azure Developer CLI テンプレートの概要 ドキュメントで確認できます。

この記事では、テンプレートの選択アプローチを使用して、Azure Developer CLI (azd) のサポートをアプリに追加する方法について説明します。 既存のテンプレートを使用したアプリへのazdサポートの追加別の方法の詳細については、ドキュメントを参照してください。 azd テンプレートの構築の詳細についてはトレーニング - azd テンプレートのビルドとデプロイに関するページを参照してください。

Select a template for your app

テンプレートの選択azd init コマンドのワークフローを使用すると、開始点として使用する既存のazd テンプレートを選択できます。 選択したテンプレートの内容がプロジェクトのルート ディレクトリに追加されます。 ほとんどのテンプレートには、必要な azd ファイルとフォルダーのセットが用意されており、多くのテンプレートには、選択したアプリケーション スタック用に Azure リソースをプロビジョニングするための完全な一連のコードとしてのインフラストラクチャ ファイルが含まれています。

この例では、 Starter - Bicep テンプレートを使用します。このテンプレートには、 azd テンプレートの基本的な構造と、使用を開始するための便利な定型コードが含まれています。 スターター テンプレートは、適切なテンプレート構造と開始リソースをスキャフォールディングするが、独自のインフラストラクチャ ファイルを作成する場合に適しています。

  1. 既存のサンプル アプリケーションを使用する前の手順に従うために、次のスターター プロジェクトをコンピューター上の空のディレクトリに複製します。

    git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
    
  2. 選択したコマンド ライン ツールで、複製されたプロジェクトのルート ディレクトリに移動します。

  3. azd init コマンドを実行して、azd テンプレートを初期化します。

    azd init
    
  4. メッセージが表示されたら、 テンプレートを選択するオプションを選択

    テンプレート オプションの選択を示すスクリーンショット。

  5. テンプレートの一覧から Starter - Bicep を選択します。 テンプレート名を入力するか、キーボードの方向キーを使用して検索できます。

  6. プロンプトが表示されたら、 testenv などの短い環境名を入力します。

  7. azd initを実行すると、次の資産が現在のディレクトリに追加されます。

    ├── .azdo                                        [ Configures an Azure Pipeline ]
    ├── .devcontainer                                [ For DevContainer ]
    ├── .github                                      [ Configures a GitHub workflow ]
    ├── .vscode                                      [ VS Code workspace configurations ]
    ├── .azure                                       [ Stores Azure configurations and environment variables ]
    ├── infra                                        [ Contains infrastructure as code files ]
    │   ├── main.bicep/main.tf                       [ Main infrastructure file ]
    │   ├── main.parameters.json/main.tfvars.json    [ Parameters file ]
    │   └── core/modules                             [ Contains reusable Bicep/Terraform modules ]
    └── azure.yaml                                   [ Describes the app and type of Azure resources]
    

Bicep ファイルを更新する

プロジェクトに、 azd テンプレートのコア構造とアセットが含まれるようになりました。 ただし、特定のプロジェクト用に Azure リソースをプロビジョニングするには、infra フォルダー内の Bicep ファイルを更新する必要があります。 サンプル アプリケーションをホストするには、Bicep ファイルを使用して次のリソースを定義する必要があります。

  • Azure App Service プラン
  • Linux 上で実行される Azure App Service
  1. Visual Studio Code など、任意のエディターでルート プロジェクト ディレクトリを開きます。

  2. エディターを使用して、infra フォルダー内のmain.bicep ファイルを開きます。 このファイルには、重要な変数、パラメーター、名前付け規則を設定するための便利な定型コードが含まれています。 Add resources to be provisioned belowを読み取る 50 行目のコメント ブロックの下に、次の Bicep を追加します。

    // Creates an app service instance to host the app
    module web './core/host/appservice.bicep' = {
      name: 'web'
      scope: rg
      params: {
        name: '${abbrs.webSitesAppService}web-${resourceToken}'
        location: location
        tags: union(tags, { 'azd-service-name': 'web' })
        appServicePlanId: appServicePlan.outputs.id
        runtimeName: 'python'
        runtimeVersion: '3.8'
        scmDoBuildDuringDeployment: true
      }
    }
    
    // Create an App Service Plan to group applications under the same payment plan and SKU
    module appServicePlan './core/host/appserviceplan.bicep' = {
      name: 'appserviceplan'
      scope: rg
      params: {
        name: '${abbrs.webServerFarms}${resourceToken}'
        location: location
        tags: tags
        sku: {
          name: 'B1'
        }
      }
    }
    

    Note

    • サブスクリプション ID に基づいて一意の文字列が生成され、 ${resourceToken} 変数として使用されます。 このトークンは、 azdによって作成されたすべての Azure リソースの名前に追加されます。
    • azd はタグを使用してリソースを識別するので、組織の名前付け規則に基づいて名前を変更できます。
    • アプリ サービスの 'azd-service-name': 'web' タグは、デプロイ ホストを識別するために使用 azd 値です。 値は、 azure.yaml ファイル内のサービスに定義されているものと同じである必要があります。

azure.yaml ファイルを更新する

アプリをデプロイするには、azd はアプリの詳細を知る必要があります。 azure.yaml ファイルは、アプリ内の各サービスのソース コードの場所、言語、および Azure ホスティング サービスを定義するために使用されます。 完全な詳細情報については、「azure.yaml スキーマ」を参照してください。

  1. プロジェクトのルートにある azure.yaml を開きます。

  2. ファイルの下部に次の行を追加します。

    name: msdocs-python-flask-webapp-quickstart
    services:
      web:
        project: .
        language: py
        host: appservice
    

テンプレートをプロビジョニングしてデプロイする

  1. すべての変更を保存し、次のコマンドを実行して、アプリ リソースをプロビジョニングして Azure にデプロイします。

    azd up
    
  2. コマンドが完了したら、コマンド出力のリンクをクリックして、デプロイされたサイトに移動します。

これで、プロジェクトは Azure Developer CLI と互換性があり、テンプレートとして使用できます。

Note

azd では、既定でアプリをコンテナー化するための Buildpack の使用もサポートされています。 azd テンプレートが Azure Container Apps または Azure Kubernetes Service を対象としていても、Docker ファイルが含まれていない場合、azdは Buildpack を使用してイメージを自動的に生成します。