Tanya Jawab Umum variabel lingkungan

Artikel ini menjawab pertanyaan yang sering diajukan tentang bekerja dengan variabel lingkungan dan Azure Developer CLI (azd).

Petunjuk / Saran

Untuk panduan komprehensif tentang membuat dan mengelola lingkungan di Azure Developer CLI, lihat Bekerja dengan lingkungan di Azure Developer CLI.

Apa perbedaan antara azd variabel lingkungan dan variabel lingkungan sistem?

azd variabel lingkungan disimpan dalam .env file di .azure/<environment name> direktori proyek Anda dan terpisah dari variabel lingkungan sistem/OS Anda. azd variabel lingkungan mengonfigurasi tugas provisi dan penyebaran templat dan dapat diakses menggunakan perintah seperti azd env atau azd env get-values.

Cuplikan layar struktur folder lingkungan.

Variabel lingkungan sistem tidak dapat diakses secara langsung melalui azd perintah dan harus dikelola dengan shell kustom atau skrip PowerShell, umumnya menggunakan azdkait.

Dapatkah azd perintah langsung membaca dan menulis variabel lingkungan sistem?

Tidak, azd perintah tidak dapat membaca atau menulis variabel lingkungan sistem. Perintah seperti azd env set atau azd env get-values beroperasi pada nilai yang disimpan dalam file templat .env untuk lingkungan tertentu azd . azd lingkungan dikelola menggunakan subfolder di .azure/<environment name> direktori templat proyek Anda, yang memungkinkan templat Anda memiliki beberapa lingkungan. Subfolder lingkungan menyimpan file konfigurasi seperti .env yang menjelaskan lingkungan.

Gunakan shell kustom atau skrip PowerShell dengan azdkait untuk membaca atau menulis variabel lingkungan tingkat sistem.

Apa hubungan antara variabel output yang diatur dalam main.bicep variabel file dan azd lingkungan?

Variabel output yang diatur dalam main.bicep file secara otomatis disimpan dalam .env file templat Anda azd . Pertimbangkan variabel output berikut dalam main.bicep file infrastruktur templat:

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

Setelah berhasil azd up atau azd provision, azd tulis kedua variabel ini ke .env file di .azure/<environment name> direktori proyek Anda:

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

Anda kemudian dapat mengakses variabel tersebut .env dari file menggunakan azd env get-values.

Variabel lingkungan mana yang diatur dalam .env file secara default?

Variabel lingkungan berikut diatur dalam .env file secara default:

Nama Deskripsi Contoh nilai Jika tersedia
AZURE_ENV_NAME Nama lingkungan yang digunakan. todo-app-dev Saat lingkungan dibuat (setelah menjalankan azd init atau azd env baru, misalnya).
AZURE_LOCATION Lokasi lingkungan yang digunakan. eastus2 Tepat sebelum lingkungan disediakan untuk pertama kalinya.
AZURE_PRINCIPAL_ID Perwakilan pengguna/layanan yang sedang berjalan. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Ditentukan secara otomatis selama provisi (sementara).
AZURE_SUBSCRIPTION_ID Langganan yang ditargetkan. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Tepat sebelum lingkungan disediakan untuk pertama kalinya.
SERVICE_<service>_IMAGE_NAME Nama lengkap gambar kontainer yang diterbitkan ke Azure Container Registry untuk layanan aplikasi kontainer. todoapp/web-dev:azdev-deploy-1664988805 Setelah penerbitan containerapp gambar berhasil

Ambil azd variabel lingkungan menggunakan azd env get-values perintah .

azd env get-values

Alasan umum untuk mengakses azd variabel lingkungan termasuk yang berikut ini:

  • Lakukan konfigurasi tambahan dalam skrip kait.
  • Mengekspos .env nilai dari templat ke kerangka kerja kode aplikasi, seperti Node.js atau .NET.
  • Tulis nilai ke .env variabel lingkungan sistem.

Petunjuk / Saran

Berhati-hatilah saat mengatur variabel lingkungan sistem, karena dapat menyebabkan konflik dengan templat lain yang memiliki nama variabel lingkungan yang sama.

Bagaimana cara mengatur variabel lingkungan baru azd secara manual?

Atur variabel lingkungan tambahan azd menggunakan azd env set perintah , menyediakan kunci dan nilai untuk variabel Anda.

Alasan umum untuk mengatur azd variabel lingkungan termasuk yang berikut ini:

  • Akses informasi sumber daya Azure yang dibuat selama provisi yang diperlukan selama penyebaran.
  • Mengesampingkan atau mengubah nilai variabel lingkungan default azd .
  • Berikan nilai konfigurasi kustom tambahan untuk digunakan dalam provisi, penyebaran, atau skrip kustom.
azd env set MY_KEY MyValue

Bagaimana cara menyalin atau menulis azd variabel lingkungan sebagai variabel lingkungan sistem?

Dalam beberapa skenario, Anda mungkin ingin menyalin azd variabel lingkungan ke file lingkungan lain atau ke lingkungan sistem Anda untuk digunakan oleh kerangka kerja bahasa. Misalnya, Anda mungkin ingin menggunakan URL titik akhir dari layanan Azure yang disediakan untuk menyambungkan ke layanan tersebut dalam kode aplikasi Anda. Gunakan skrip kustom untuk mengambil azd variabel lingkungan lalu atur sebagai variabel lingkungan sistem. Umum untuk menjalankan skrip ini sebagai kait selama azd siklus hidup, seperti yang terlihat dalam contoh berikut:

Nota

Berhati-hatilah saat menyalin azd variabel lingkungan ke sistem lokal Anda atau lingkungan operasi lainnya. Variabel lingkungan sistem dengan nama yang cocok dapat diambil oleh azd dan menyebabkan konflik antara templat yang berbeda azd atau lingkungan yang berbeda 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

Skrip shell yang dirujuk untuk Linux mengambil azd variabel lingkungan dan mengekspornya sebagai variabel lingkungan sistem:

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

Skrip PowerShell yang dirujuk untuk Windows mengambil azd variabel lingkungan dan mengekspornya sebagai variabel lingkungan sistem:

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

Langkah selanjutnya