次の方法で共有


環境変数に関するよくある質問

この記事では、環境変数と Azure Developer CLI (azd) の使用に関するよく寄せられる質問に回答します。

azd 環境変数とシステム環境変数の違いは何ですか?

azd 環境変数はプロジェクトの .azure/<environment name> ディレクトリ内の .env ファイルに保存され、システム/OS 環境変数とは別になります。 azd 環境変数はテンプレートのプロビジョニングおよびデプロイメント タスクを構成し、 azd envazd env get-values などのコマンドを使用してアクセスできます。

環境フォルダー構造のスクリーンショット。

システム環境変数は azd コマンドでは直接アクセスできないため、通常は azd フック を使用して、カスタム シェルまたは PowerShell スクリプトで管理する必要があります。

azd コマンドはシステム環境変数を直接読み書きできますか?

いいえ、 azd コマンドはシステム環境変数を読み書きできません。 azd env setazd env get-values などのコマンドは、特定の azd 環境のテンプレート .env ファイルに保存されている値を操作します。 azd 環境は、プロジェクト テンプレートの .azure/<environment name> ディレクトリ内のサブフォルダーを使用して管理され、テンプレートに複数の環境を含めることができます。 環境サブフォルダーには、環境を記述する .env などの構成ファイルが保存されます。

システム レベルの環境変数を読み書きするには、 azd フック を含むカスタム シェルまたは PowerShell スクリプトを使用します。

main.bicep ファイルに設定された出力変数と azd 環境変数との関係は何ですか?

main.bicep ファイルに設定された出力変数は、 azd テンプレートの .env ファイルに自動的に保存されます。 main.bicep テンプレート インフラストラクチャ ファイル内の次の出力変数を考慮してください。

output API_BASE_URL string = api.outputs.SERVICE_API_URI
output REACT_APP_WEB_BASE_URL string = web.outputs.SERVICE_WEB_URI

azd up または azd provision が成功すると、 azd はプロジェクトの .azure/<environment name> ディレクトリにある .env ファイルに次の 2 つの変数を書き込みます。

API_BASE_URL="<example-api-url>"
output REACT_APP_WEB_BASE_URL="<example-app-url>"

その後、 azd env get-values を使用して .env ファイルからそれらの変数にアクセスできます。

.env ファイルではどの環境変数がデフォルトで設定されていますか?

デフォルトでは、次の環境変数が .env ファイルに設定されています。

名前 説明 サンプル値 使用可能な場合
AZURE_ENV_NAME 使用中の環境の名前。 todo-app-dev 環境が作成されたとき (azd init や azd env new などを実行した後)。
AZURE_LOCATION 使用中の環境の場所。 eastus2 環境が初めてプロビジョニングされる直前。
AZURE_PRINCIPAL_ID 実行中のユーザー/サービス プリンシパル。 925cff12-ffff-4e9f-9580-8c06239dcaa4 プロビジョニング中に自動的に決定されます (エフェメラル)。
AZURE_SUBSCRIPTION_ID 対象となるサブスクリプション。 925cff12-ffff-4e9f-9580-8c06239dcaa4 環境が初めてプロビジョニングされる直前。
SERVICE_<service>_IMAGE_NAME コンテナー アプリ サービス用に Azure Container Registry に発行されたコンテナー イメージの完全な名前。 todoapp/web-dev:azdev-deploy-1664988805 containerapp イメージの発行が成功した後

azd env get-values コマンドを使用して azd 環境変数を取得します。

azd env get-values

azd 環境変数にアクセスする一般的な理由は次のとおりです。

  • フック スクリプトで追加の構成を実行します。
  • テンプレートの .env 値を Node.js や .NET などのアプリケーション コード フレームワークに公開します。
  • .env の値をシステム環境変数に書き込みます。

ヒント

システム環境変数を設定する場合は、同じ環境変数名を共有する他のテンプレートと競合する可能性があるため、注意してください。

新しい azd 環境変数を手動で設定するにはどうすればよいですか?

azd env set コマンドを使用して、変数のキーと値を指定して、追加の azd 環境変数を設定します。

azd 環境変数を設定する一般的な理由は次のとおりです。

  • プロビジョニング中に作成され、デプロイ中に必要な Azure リソース情報にアクセスします。
  • デフォルトの azd 環境変数値を上書きまたは変更します。
  • プロビジョニング、展開、またはカスタム スクリプトで使用するための追加のカスタム構成値を提供します。
azd env set MY_KEY MyValue

azd 環境変数をシステム環境変数としてコピーまたは書き込むにはどうすればいいですか?

シナリオによっては、言語フレームワークで使用するために、 azd 環境変数を別の環境ファイルまたはシステム環境にコピーする必要がある場合があります。 たとえば、プロビジョニングされた Azure サービスのエンドポイント URL を使用して、アプリ コード内でそれらのサービスに接続する必要がある場合があります。 カスタム スクリプトを使用して azd 環境変数を取得し、それらをシステム環境変数として設定します。 次の例に示すように、これらのスクリプトは azd ライフサイクル中にフックとして実行されるのが一般的です。

Note

azd 環境変数をローカル システムまたは他のオペレーティング環境にコピーする場合は注意してください。 名前が一致するシステム環境変数は azd によって取得され、異なる azd テンプレートまたは異なる azd 環境間で競合が発生する可能性があります。

postprovision:
    windows:
        shell: pwsh
        run: ./scripts/map-env-vars.ps1
        interactive: false
        continueOnError: false
    posix:
        shell: sh
        run: ./scripts/map-env-vars.sh
        interactive: false
        continueOnError: false

参照されている Linux のシェル スクリプトは、 azd 環境変数を取得し、システム環境変数としてエクスポートします。

echo "Loading azd .env file from current environment..."

while IFS='=' read -r key value; do
    value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
    export "$key=$value"
done <<EOF
$(azd env get-values)
EOF

参照されている Windows 用の PowerShell スクリプトは、 azd 環境変数を取得し、それらをシステム環境変数としてエクスポートします。

Write-Host "Loading azd .env file from current environment"
foreach ($line in (& azd env get-values)) {
    if ($line -match "([^=]+)=(.*)") {
        $key = $matches[1]
        $value = $matches[2] -replace '^"|"$'
        [Environment]::SetEnvironmentVariable($key, $value)
    }
}

次のステップ