次の方法で共有


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

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

ヒント

Azure Developer CLI での環境の作成と管理に関する包括的なガイドについては、「 Azure Developer CLI での環境の操作」を参照してください。

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

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

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

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

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

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

azd hook でカスタム シェルまたは 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、次の 2 つの変数がプロジェクトの.azure/<environment name> ディレクトリの.env ファイルに書き込まれます。

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 ライフサイクル中にフックとして実行するのが一般的です。

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)
    }
}

次のステップ