Azure サービスを追加して azd テンプレートを拡張する

新しい Azure Developer CLI (azd) テンプレートを構築するか、既存のテンプレートから開始した後、要件の変化に応じてアプリケーションとインフラストラクチャを拡張および進化させることができます。 このチュートリアルでは、テンプレートが既に提供しているモジュールに依存せずに、新しい Azure サービスをテンプレートに追加する方法について説明します。

hello-azd テンプレートから始めて、Azure Translator リソースを定義するBicep モジュールを作成し、テンプレートのインフラストラクチャ エントリ ポイントからモジュールを参照し、その出力をazd環境の値として公開します。 このチュートリアルでは、インフラストラクチャの拡張に重点を置き、アプリケーション コードは変更しません。

Note

次の変更は、直接行うか、AI コーディング アシスタントの助けを借りて行うことができます。 作成方法に関係なく、結果のファイルを確認し、デプロイ前にテンプレートを検証します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

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

空のディレクトリでターミナルを開き、そのディレクトリ内の hello-azd テンプレートを初期化します。

azd init --template hello-azd .

テンプレートには次のものが含まれます。

  • azure.yamlaca サービスとしてAzure Container Appsにデプロイされた C# アプリケーション。
  • アプリケーション用のユーザー割り当てのマネージド ID。
  • BLOB コンテナーとテーブルを持つAzure Storage アカウント。
  • Azure Container RegistryとAzure Container Apps環境。
  • infra/coreの再利用可能なBicep モジュール。

初期化前のテンプレートの選択と確認のガイダンスについては、「既存の テンプレートから開始する」を参照してください。

Translator モジュールを作成する

手動または AI コーディング アシスタントの支援を得て、 infra/translator.bicepという名前のファイルを作成します。 この新しいモジュールは自己完結型であり、開始テンプレートのモジュールには依存しません。

@description('Name of the Azure Translator resource.')
param name string

@description('Azure region for the resource.')
param location string

@description('Tags to apply to the resource.')
param tags object = {}

@description('Pricing tier for Azure Translator.')
@allowed([
  'F0'
  'S1'
])
param sku string = 'F0'

resource translator 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
  name: name
  location: location
  kind: 'TextTranslation'
  sku: {
    name: sku
  }
  properties: {
    customSubDomainName: name
    disableLocalAuth: true
    publicNetworkAccess: 'Enabled'
  }
  tags: tags
}

output name string = translator.name
output endpoint string = translator.properties.endpoint

モジュールは、 TextTranslation リソースの種類を使用し、ローカル キー認証を無効にします。 F0 レベルは評価に役立ちますが、サブスクリプションごとに無料の Translator リソースは 1 つだけ許可されます。 サブスクリプションに既にF0 リソースが含まれている場合、またはプロジェクトに有料レベルが必要な場合は、S1を使用します。

Important

この入門例では、パブリック エンドポイントを有効にして、ネットワーク インフラストラクチャを追加せずにリソースをプロビジョニングできるようにします。 運用環境でこのパターンを使用する前に、プライベート エンドポイント、ネットワーク アクセス制御、監視、組織のセキュリティ要件を評価します。

からモジュールを参照する main.bicep

hello-azd テンプレートでは、rgリソース グループ、locationtagsresourceTokenの値をinfra/main.bicepで定義します。 この編集は手動で行うか、AI アシスタントに追加を求めることができます。 rg リソース宣言の後に、次のモジュールを追加します。

module translator './translator.bicep' = {
  name: 'translator'
  scope: rg
  params: {
    name: 'translator-${resourceToken}'
    location: location
    tags: tags
  }
}

scope プロパティは、テンプレートによって作成されるリソース グループにモジュールをデプロイします。 既存の resourceToken 値により、Translator リソース名が環境ごとに異なります。

Translator の出力をエクスポートする

infra/main.bicepの最後に次の出力を追加します。

output AZURE_TRANSLATOR_NAME string = translator.outputs.name
output AZURE_TRANSLATOR_ENDPOINT string = translator.outputs.endpoint

プロビジョニング後、 azd はアクティブな環境でこれらの非セキュリティ出力をキャプチャします。 後でアプリケーション コードを変更すると、これらの値を使用して Translator リソースを見つけることができます。

インフラストラクチャをプロビジョニングして確認する

アプリケーション コードをデプロイせずに、テンプレートのインフラストラクチャをプロビジョニングします。

azd provision

azd env get-valuesを実行し、出力にAZURE_TRANSLATOR_NAMEAZURE_TRANSLATOR_ENDPOINTが含まれていることを確認します。 Azure ポータルで、リソース グループにAzure Translator リソースが含まれていることを確認します。

この時点で、テンプレートは AI サービスをプロビジョニングしますが、サンプル アプリケーションはそれに接続しません。 その統合を完了するには、アプリケーションのマネージド ID の最小特権アクセスを構成し、エンドポイントをアプリケーションに渡して、Translator クライアントをアプリケーション コードに追加します。 詳細については、Azure Translatorドキュメントを参照してください

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

リソースが不要になったら、リソースを削除して、継続的な料金が発生しないようにします。

azd down --purge

ヘルプを要求する

Azure Developer CLI のバグの報告、ヘルプの要求、または新機能の提案の方法については、トラブルシューティングとサポートページを参照してください。