Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önceki bölüm: Ana uygulama uygulaması
Bu bölümde, ana uygulama tarafından içeri aktarılan Python kitaplıkları ve bağlı olduğu ortam değişkenleri incelenir. Uygulamayı Azure dağıttığınızda, Azure App Service'daki Uygulama Ayarları aracılığıyla bu ortam değişkenlerini sağlayın.
Bağımlılıklar ve içeri aktarma ifadeleri
Uygulama aşağıdaki kitaplıklara dayanır:
- Flask – web API'sini tanımlamak için
- requests – Giden API çağrıları yapmak için standart Python HTTP istemcisi
- azure.identity – Microsoft Entra Id belirteç tabanlı kimlik doğrulamasını işlemek için
- azure.keyvault.secrets – Azure Key Vault'tan sırları güvenli bir şekilde almak için
- azure.storage.queue – Azure Kuyruk Depolama ile etkileşime geçmek için
Bu bağımlılıkları uygulamanın requirements.txt dosyasına ekleyin. Bunları dağıtım veya yerel kurulum sırasında yükleyin.
flask
requests
azure.identity
azure.keyvault.secrets
azure.storage.queue
Uygulamayı Azure App Service'e dağıttığınızda, Azure bu gereksinimleri konak sunucusuna otomatik olarak yükler. Yerel ortamda çalıştırırken, bunları pip install -r requirements.txt ile ortamınıza yükleyin.
Kod dosyası, kodda kullanılan kitaplıkların bölümleri için gerekli içeri aktarma deyimleriyle başlar:
from flask import Flask, request, jsonify
import requests, random, string, os
from datetime import datetime
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
from azure.storage.queue import QueueClient
Ortam değişkenleri
Uygulama kodu şu dört ortam değişkenine bağlıdır:
| Değişken | Değer |
|---|---|
THIRD_PARTY_API_ENDPOINT |
https://msdocs-example-api.azurewebsites.net/api/RandomNumber'nde açıklanan gibi üçüncü taraf API'sinin URL'si. |
KEY_VAULT_URL |
Üçüncü taraf API'si için erişim anahtarını depoladığınız Azure Key Vault'un URL'si. |
THIRD_PARTY_API_SECRET_NAME |
Key Vault'ta, üçüncü taraf API'sinin erişim anahtarını içeren gizli bilginin adı. |
STORAGE_QUEUE_URL |
Azure'da yapılandırdığınız azure depolama kuyruğunun URL'si ( https://msdocsexamplemainapp.queue.core.windows.net/code-requests bkz . Bölüm 4). Kuyruk adı URL'nin sonuna eklendiğinden kodun herhangi bir yerinde adı görmezsiniz. |
Bu değişkenleri nasıl ayarlayacağınız, kodun çalıştığı yere bağlıdır:
Kodu yerel olarak çalıştırırken, kullandığınız komut kabuğunda (PowerShell, Bash veya CMD gibi) bu değişkenleri oluşturun. (Uygulamayı bir sanal makineye dağıtırsanız, benzer sunucu tarafı değişkenleri oluşturursunuz.) Bir .env dosyasından anahtar-değer çiftlerini okuyan ve ortam değişkenleri olarak ayarlayan python-dotenv gibi bir kitaplık da kullanabilirsiniz.
Kodu bu kılavuzda gösterildiği gibi Azure App Service dağıttığınızda, sunucunun kendisine erişiminiz olmaz. Bunun yerine, App Service yapılandırmasında aynı adlarla uygulama ayarlarını tanımlayın. Bu ayarlar, uygulamayı otomatik olarak ortam değişkenleri olarak kullanıma sunar.
Sağlama betikleri, Azure CLI komutunu az webapp config appsettings setkullanarak bu ayarları oluşturur. Dört değişkenin tümünü tek bir komutla ayarlayın.
Azure portalı aracılığıyla ayarlar oluşturmak için bkz. Azure portalında App Service uygulaması yapılandırma.
Kodu yerel olarak çalıştırırken, yerel hizmet sorumlunuz hakkında bilgi içeren ortam değişkenlerini de belirtmeniz gerekir.
DefaultAzureCredential bu değerleri arar. App Service'e dağıtıldığında, uygulamanın sistem tarafından atanan yönetilen kimliği kimlik doğrulaması yerine kullanıldığından bu değerleri ayarlamanız gerekmez.
| Değişken | Değer |
|---|---|
AZURE_TENANT_ID |
Microsoft Entra kiracısı (dizin) kimliği. |
AZURE_CLIENT_ID |
Kiracıdaki bir Uygulama Kaydının istemci (uygulama) kimliği. |
AZURE_CLIENT_SECRET |
Uygulama Kaydı için oluşturduğunuz bir istemci parolası. |
Daha fazla bilgi için, yerel geliştirme sırasında hizmet sorumlularını kullanarak Azure hizmetlerinde Python uygulamalarının kimliğini doğrulama hakkında bilgi için 'a bakın.