テンプレートに更新を適用する

完了

azd による最初のプロビジョニングとデプロイのプロセスは、Azure でアプリを開始するための優れた方法です。 ただし、環境が実行された後は、アプリ コードや Azure 環境への変更を開始する必要があります。

azd テンプレートに変更を加えた後に Azure 環境を更新するには、いくつかの異なるワークフローから選択できます。 アプリケーション コードとインフラストラクチャ ファイルのどちらを変更したかに関係なく、いつでも azd up を再度実行して環境を更新できます。 azd up は、実行するたびにパッケージ化、プロビジョニング、デプロイの手順が完了されるため、すべての変更を確実に Azure にプッシュするためのシンプルな方法です。

ただし、azd には、開発者ワークフローの特定のステージに対応する、よりきめ細かいコマンドも用意されています。 これらのコマンドを使うと、変更されていないことがわかっている不要なチェックや手順をスキップして、時間を節約することもできます。

  • azd deploy - このコマンドは、アプリケーションのソース コードをパッケージ化して、Azure に再デプロイします。 ただし、Azure リソースに変更を適用するコードとしてのインフラストラクチャのファイルは実行しません。

  • azd provision - このコマンドは、コードとしてのインフラストラクチャのファイルへの変更に基づいて、Azure リソースを作成または更新します。 たとえば、azd provision を Bicep または Terraform ファイルに追加した場合、Azure に新しいストレージ アカウントが作成されます。 ただし、このコマンドによってアプリケーションのソース コードがパッケージ化されたり再デプロイされたりすることはありません。

アプリ コードを更新する

あなたのチームは Todo アプリではなくチケット管理アプリを構築しているので、それに応じてヘッダー テキストを変更する必要があります。 次の手順を実行して、アプリケーション コードを更新し、azd を使って変更を再デプロイします。

  1. テンプレートの src/web/src/layout ディレクトリで header.tsx ファイルを見つけます。 Visual Studio Code を使用している場合は、ctrl + p ショートカットを使って header.tsx ファイルを直接検索することもできます。

  2. 42 行目あたりにあるヘッダーの表示テキストを、Todo から Ticket Manager に変更し、変更を保存します。

    <Stack horizontal styles={logoStyles}>
        <FontIcon aria-label="Check" iconName="SkypeCircleCheck" className={logoIconClass} />
        <Text variant="xLarge">Ticket Manager</Text>
    </Stack>
    
  3. ディレクトリのルートに設定されたコマンド プロンプト ウィンドウで、azd deploy コマンドを実行します。 azd によってコードが再デプロイされるまで、しばらく待ちます。

    azd deploy
    
  4. コマンドが完了したら、ブラウザーで再度アプリにアクセスします。 ヘッダーの左上のテキストが Ticket Manager になっているはずです。

Azure リソースを更新する

あなたのチームでは、ユーザーがチケットを使ってファイルをアップロードする機能を追加する予定です。たとえば、発生している問題の画像やスクリーンショット、その他のサービス ドキュメントなどです。 これらのファイルを保持する Azure Storage アカウントを環境に追加する必要があります。 また、このテンプレートが将来の環境にプロビジョニングされたときに、初期セットアップ中にこのストレージ アカウントが含まれるようにする必要もあります。 次の手順を使用して、テンプレートのコード ファイルとしてのインフラストラクチャを変更することで、これらの要件を満たすことができます。

  1. テンプレートのルートにある infra フォルダーで、main.bicep ファイルを開きます。

  2. このテンプレートにはストレージ アカウントを作成するための再利用可能な Bicep モジュールが既に含まれているため、それを使って独自のものを追加できます。 main.bicep ファイルの最後の 180 行目あたりにある、出力変数を定義している箇所の上に、次のコード スニペットを貼り付けます。

    module storage './core/storage/storage-account.bicep' = {
      name: 'storage'
      scope: rg
      params: {
        name: '${abbrs.storageStorageAccounts}${resourceToken}'
        location: location
        tags: tags
      }
    }
    
  3. 変更内容を保存し、azd provision コマンドを実行します。 azd provision を実行すると、テンプレートのコード ファイルとしてのインフラストラクチャを使って Azure 環境が更新されますが、アプリのソース コードは再デプロイされません。

    azd provision
    
  4. コマンドが完了したら、コンソールに出力される URL に従って、ブラウザーで Azure portal を起動します。 最初にプロビジョニングしたすべてのリソースを保持するリソース グループが表示され、新しいストレージ アカウントが含まれているはずです。

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

注意

azd を使う場合は、コード ファイルとしてのインフラストラクチャがべき等であること、つまり、何回実行しても目的の終了状態は変わらないことに注意してください。 Bicep または Terraform では、Azure に変更を適用して環境がインフラストラクチャ ファイルの状態と一致するようにしますが、既に目的の状態に一致しているリソースに対しては変更は適用されません。