この記事では、環境変数と Azure Developer CLI (azd
) の使用に関するよく寄せられる質問に回答します。
azd
環境変数とシステム環境変数の違いは何ですか?
azd
環境変数はプロジェクトの .azure/<environment name>
ディレクトリ内の .env
ファイルに保存され、システム/OS 環境変数とは別になります。 azd
環境変数はテンプレートのプロビジョニングおよびデプロイメント タスクを構成し、 azd env
や azd env get-values
などのコマンドを使用してアクセスできます。
システム環境変数は azd
コマンドでは直接アクセスできないため、通常は azd
フック を使用して、カスタム シェルまたは PowerShell スクリプトで管理する必要があります。
azd
コマンドはシステム環境変数を直接読み書きできますか?
いいえ、 azd
コマンドはシステム環境変数を読み書きできません。 azd env set
や azd 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 イメージの発行が成功した後 |
.env
ファイルから azd
環境変数を取得するための推奨される方法は何ですか? なぜこれをする必要があるのでしょうか?
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)
}
}