Ortam değişkenleri hakkında SSS

Bu makalede, ortam değişkenleri ve Azure Geliştirici CLI(azd) ile çalışma hakkında sık sorulan sorular yanıtlanmaktadır.

İpucu

Azure Geliştirici CLI'sinde ortam oluşturma ve yönetme hakkında kapsamlı bir kılavuz için bkz. Azure Geliştirici CLI'sinde ortamlarla çalışma.

Ortam değişkenleri ile sistem ortamı değişkenleri arasındaki azd farklar nelerdir?

azd ortam değişkenleri projenizin dizinindeki dosyada .env.azure/<environment name> depolanır ve sistem/işletim sistemi ortam değişkenlerinden ayrıdır. azdortam değişkenleri şablon sağlama ve dağıtım görevlerini yapılandırırken veya azd env get-valuesgibi azd env komutlar kullanılarak erişilebilir.

Ortam klasörü yapısının ekran görüntüsü.

Sistem ortamı değişkenlerine komutlar aracılığıyla azd doğrudan erişilemez ve genellikle kancalar kullanılarak azd özel kabuk veya PowerShell betikleriyle yönetilmelidir.

Komutlar sistem ortamı değişkenlerini doğrudan okuyabilir ve yazabilir mi azd ?

Hayır, azd komutlar sistem ortamı değişkenlerini okuyamaz veya yazamaz. Gibi azd env set komutlar veya azd env get-values belirli azd bir ortam için şablon .env dosyasında depolanan değerler üzerinde çalışır. azd ortamları, proje şablonunuzun dizinindeki .azure/<environment name> alt klasörler kullanılarak yönetilir ve bu da şablonunuzun birden çok ortam olmasını sağlar. Ortam alt klasörleri, ortamı açıklayan gibi .env yapılandırma dosyalarını tutar.

Sistem düzeyinde ortam değişkenlerini okumak veya yazmak için kancalıazd özel kabuk veya PowerShell betikleri kullanın.

Dosya ve azd ortam değişkenlerinde main.bicep ayarlanan çıkış değişkenleri arasındaki ilişki nedir?

Dosyada main.bicep ayarlanan çıkış değişkenleri otomatik olarak şablonunuzun azd dosyasında depolanır.env. Şablon altyapısı dosyasında aşağıdaki çıkış değişkenlerini main.bicep göz önünde bulundurun:

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

veya başarılı azd upazd provisionazd olduktan sonra projenizin dizinindeki .azure/<environment name> dosyaya .env şu iki değişkeni yazar:

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

Daha sonra kullanarak azd env get-valuesbu değişkenlere dosyasından .env erişebilirsiniz.

Dosyada .env varsayılan olarak hangi ortam değişkenleri ayarlanır?

Dosyada .env varsayılan olarak aşağıdaki ortam değişkenleri ayarlanır:

İsim Açıklama Örnek değerler Uygun olduğunda
AZURE_ENV_NAME Kullanımdaki ortamın adı. todo-app-dev Bir ortam oluşturulduğunda (örneğin azd init veya azd env new çalıştırıldıktan sonra).
AZURE_LOCATION Kullanımdaki ortamın konumu. eastus2 Ortam ilk kez sağlanmadan hemen önce.
AZURE_PRINCIPAL_ID Çalışan kullanıcı/hizmet sorumlusu. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Sağlama sırasında otomatik olarak belirlenir (kısa ömürlü).
AZURE_SUBSCRIPTION_ID Hedeflenen abonelik. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Ortam ilk kez sağlanmadan hemen önce.
SERVICE_<service>_IMAGE_NAME Kapsayıcı uygulama hizmetleri için Azure Container Registry'de yayımlanan kapsayıcı görüntüsünün tam adı. todoapp/web-dev:azdev-deploy-1664988805 Bir görüntünün başarılı bir şekilde yayımlanmasının containerapp ardından

komutunu kullanarak azd env get-values ortam değişkenlerini alınazd.

azd env get-values

Ortam değişkenlerine erişmenin azd yaygın nedenleri şunlardır:

  • Kanca betiklerinde ek yapılandırma gerçekleştirin.
  • Şablondaki .env değerleri Node.js veya .NET gibi uygulama kodu çerçevesine kullanıma sunma.
  • .env Değerleri sistem ortamı değişkenlerine yazın.

İpucu

Sistem ortam değişkenlerini ayarlarken dikkatli olun çünkü bunlar aynı ortam değişkeni adlarını paylaşan diğer şablonlarla çakışmalara neden olabilir.

Yeni azd bir ortam değişkenini el ile nasıl ayarlayabilirim?

komutunu kullanarak azd env set değişkeninizin anahtarını ve değerini sağlayarak ek azd ortam değişkenleri ayarlayın.

Ortam değişkenlerini ayarlamanın azd yaygın nedenleri şunlardır:

  • Dağıtım sırasında gerekli olan sağlama sırasında oluşturulan Azure kaynak bilgilerine erişin.
  • Varsayılan azd ortam değişkeni değerlerini geçersiz kılın veya değiştirin.
  • Sağlama, dağıtım veya özel betiklerde kullanmak için ek özel yapılandırma değerleri sağlayın.
azd env set MY_KEY MyValue

Ortam değişkenlerini sistem ortamı değişkenleri olarak nasıl kopyalayabilir veya yazabilirsiniz azd ?

Bazı senaryolarda ortam değişkenlerini dil çerçeveleri tarafından kullanılmak üzere başka bir ortam dosyasına veya sistem ortamınıza kopyalamak azd isteyebilirsiniz. Örneğin, uygulama kodunuzda bu hizmetlere bağlanmak için sağlanan Azure hizmetlerinden uç nokta URL'lerini kullanmak isteyebilirsiniz. Ortam değişkenlerini almak azd ve sonra bunları sistem ortamı değişkenleri olarak ayarlamak için özel betikler kullanın. Aşağıdaki örnekte görüldüğü gibi bu betikleri yaşam döngüsü boyunca azd kanca olarak çalıştırmak yaygın bir durumdur:

Uyarı

Ortam değişkenlerini yerel sisteminize veya diğer işletim ortamlarınıza kopyalarken azd dikkatli olun. Eşleşen adlara sahip sistem ortamı değişkenleri tarafından azd seçilebilir ve farklı şablonlar veya farklı azdazd ortamlar arasında çakışmalara neden olabilir.

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 için başvuruda bulunan kabuk betiği ortam değişkenlerini alır azd ve bunları sistem ortamı değişkenleri olarak dışarı aktarır:

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 için başvuruda bulunan PowerShell betiği ortam değişkenlerini alır azd ve bunları sistem ortamı değişkenleri olarak dışarı aktarır:

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

Sonraki Adımlar