Udostępnij za pośrednictwem


Zmienne środowiskowe — często zadawane pytania

Ten artykuł zawiera odpowiedzi na często zadawane pytania dotyczące pracy ze zmiennymi środowiskowymi i interfejsem wiersza polecenia dla deweloperów platformy Azure (azd).

Jakie są różnice między zmiennymi azd środowiskowymi a zmiennymi środowiskowymi systemu?

azd zmienne środowiskowe są przechowywane w .env pliku w .azure/<environment name> katalogu projektu i są oddzielone od zmiennych środowiskowych systemu/systemu operacyjnego. azd zmienne środowiskowe konfigurują zadania aprowizacji i wdrażania szablonu i są dostępne przy użyciu poleceń, takich jak azd env lub azd env get-values.

Zrzut ekranu przedstawiający strukturę folderów środowiska.

Zmienne środowiskowe systemu nie są bezpośrednio dostępne za pośrednictwem poleceń i powinny być zarządzane za pomocą azd niestandardowej powłoki lub skryptów programu PowerShell, zazwyczaj przy użyciu azd punktów zaczepienia.

Czy polecenia mogą azd bezpośrednio odczytywać i zapisywać zmienne środowiskowe systemu?

Nie, azd polecenia nie mogą odczytywać ani zapisywać zmiennych środowiskowych systemu. Polecenia, takie jak azd env set lub azd env get-values działające na wartościach przechowywanych w pliku szablonu .env dla określonego azd środowiska. azd środowiska są zarządzane przy użyciu podfolderów w .azure/<environment name> katalogu szablonu projektu, co umożliwia szablonowi posiadanie wielu środowisk. Podfoldery środowiska przechowują pliki konfiguracji, takie jak .env opis środowiska.

Użyj niestandardowej powłoki lub skryptów programu PowerShell z azd hakami , aby odczytywać lub zapisywać zmienne środowiskowe na poziomie systemu.

Jaka jest relacja między zmiennymi wyjściowymi ustawionymi w main.bicep pliku i azd zmiennych środowiskowych?

Zmienne wyjściowe ustawione w main.bicep pliku są automatycznie przechowywane w .env pliku szablonu azd . Rozważ następujące zmienne wyjściowe w main.bicep pliku infrastruktury szablonu:

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

Po pomyślnym wykonaniu azd up operacji lub azd azd provisionzapisuje te dwie zmienne .env w pliku w .azure/<environment name> katalogu projektu:

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

Następnie możesz uzyskać dostęp do tych zmiennych z .env pliku przy użyciu polecenia azd env get-values.

Które zmienne środowiskowe są domyślnie ustawiane w .env pliku?

Następujące zmienne środowiskowe są domyślnie ustawiane w .env pliku:

Nazwa/nazwisko opis Przykładowe wartości Gdy jest dostępny
AZURE_ENV_NAME Nazwa używanego środowiska. todo-app-dev Po utworzeniu środowiska (na przykład po uruchomieniu azd init lub azd env new).
AZURE_LOCATION Lokalizacja środowiska w użyciu. eastus2 Bezpośrednio przed zainicjowaniem obsługi administracyjnej środowiska po raz pierwszy.
AZURE_PRINCIPAL_ID Uruchomiona jednostka użytkownika/usługi. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Określana automatycznie podczas aprowizacji (efemeryczna).
AZURE_SUBSCRIPTION_ID Subskrypcja docelowa. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Bezpośrednio przed zainicjowaniem obsługi administracyjnej środowiska po raz pierwszy.
SERVICE_<service>_IMAGE_NAME Pełna nazwa obrazu kontenera opublikowanego w usłudze Azure Container Registry dla usług app services kontenera. todoapp/web-dev:azdev-deploy-1664988805 Po pomyślnym opublikowaniu containerapp obrazu

Pobierz azd zmienne środowiskowe przy użyciu azd env get-values polecenia .

azd env get-values

Typowe przyczyny uzyskiwania dostępu azd do zmiennych środowiskowych obejmują następujące elementy:

  • Wykonaj dodatkową konfigurację w skryptach punktów zaczepienia.
  • Uwidaczniaj .env wartości z szablonu do struktury kodu aplikacji, na przykład Node.js lub .NET.
  • Zapisz wartości w .env zmiennych środowiskowych systemowych.

Napiwek

Należy zachować ostrożność podczas ustawiania systemowych zmiennych środowiskowych, ponieważ mogą powodować konflikty z innymi szablonami, które współużytkują te same nazwy zmiennych środowiskowych.

Jak mogę ręcznie ustawić nową azd zmienną środowiskową?

Ustaw dodatkowe azd zmienne środowiskowe przy użyciu azd env set polecenia , podając klucz i wartość zmiennej.

Typowe przyczyny ustawiania azd zmiennych środowiskowych obejmują następujące elementy:

  • Uzyskaj dostęp do informacji o zasobach platformy Azure utworzonych podczas aprowizacji, które są potrzebne podczas wdrażania.
  • Zastąpij lub zmień domyślne azd wartości zmiennych środowiskowych.
  • Podaj dodatkowe niestandardowe wartości konfiguracji do użycia w aprowizacji, wdrażaniu lub skryptach niestandardowych.
azd env set MY_KEY MyValue

Jak mogę kopiować lub zapisywać azd zmienne środowiskowe jako zmienne środowiskowe systemu?

W niektórych scenariuszach możesz skopiować azd zmienne środowiskowe do innego pliku środowiskowego lub do środowiska systemowego do użycia przez struktury językowe. Na przykład możesz użyć adresów URL punktów końcowych z aprowizowania usług platformy Azure w celu nawiązania połączenia z tymi usługami w kodzie aplikacji. Użyj skryptów niestandardowych, aby pobrać azd zmienne środowiskowe, a następnie ustawić je jako zmienne środowiskowe systemu. Te skrypty są często uruchamiane jako haki podczas azd cyklu życia, jak pokazano w poniższym przykładzie:

Uwaga

Należy zachować ostrożność podczas kopiowania azd zmiennych środowiskowych do systemu lokalnego lub innych środowisk operacyjnych. Zmienne środowiskowe systemu z pasującymi nazwami można pobierać azd i powodować konflikty między różnymi azd szablonami lub różnymi azd środowiskami.

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

Przywołyny skrypt powłoki dla systemu Linux pobiera azd zmienne środowiskowe i eksportuje je jako zmienne środowiskowe systemu:

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

Przywołyny skrypt programu PowerShell dla systemu Windows pobiera azd zmienne środowiskowe i eksportuje je jako zmienne środowiskowe systemu:

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

Następne kroki