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: Bağımlılıklar ve ortam değişkenleri
Deyimlerin hemen ardından import uygulamanın başlangıç kodu, istek işleme işlevleri boyunca kullanılan anahtar değişkenlerini başlatır.
İlk olarak uygulama, yolları tanımlamanın ve gelen HTTP isteklerini işlemenin temeli olan Flask uygulama nesnesini oluşturur. Ardından, bir ortam değişkeninden üçüncü taraf API uç noktası URL'sini alır. Bu yaklaşım, kod tabanını değiştirmeden uç noktayı yapılandırmayı kolaylaştırır:
app = Flask(__name__)
app.config["DEBUG"] = True
number_url = os.environ["THIRD_PARTY_API_ENDPOINT"]
Ardından, Azure hizmetleriyle kimlik doğrulaması yaparken kullanılması önerilen kimlik bilgisini temsil eden DefaultAzureCredential nesnesini alır. Bkz. DefaultAzureCredential ile Azure'da barındırılan uygulamaların kimliğini doğrulama.
credential = DefaultAzureCredential()
Yerel olarak çalıştırıldığında, DefaultAzureCredential yerel geliştirme için kullandığınız hizmet sorumlusuna ilişkin bilgileri içeren AZURE_TENANT_ID, AZURE_CLIENT_IDve AZURE_CLIENT_SECRET ortam değişkenlerini arar. Azure'da çalıştırıldığında, DefaultAzureCredential varsayılan olarak uygulamanın üzerinde etkinleştirilen sistem tarafından atanan yönetilen kimliği kullanır. Varsayılan davranışı uygulama ayarlarıyla geçersiz kılabilirsiniz, ancak bu örnek senaryoda varsayılan davranış kullanılır.
Kod daha sonra üçüncü taraf API'sinin erişim anahtarını Azure Key Vault'tan alır. Sağlama betiğinde, Key Vault, az keyvault create kullanılarak oluşturulur ve gizli dizi, az keyvault secret set kullanılarak depolanır.
Key Vault kaynağına, KEY_VAULT_URL ortam değişkeninden yüklenen bir URL aracılığıyla erişilir.
key_vault_url = os.environ["KEY_VAULT_URL"]
Azure Key Vault'tan gizli dizi almak için uygulamanın Key Vault hizmetiyle iletişim kuran bir istemci nesnesi oluşturması gerekir. Amaç bir sır okumak olduğundan, uygulama SecretClient kitaplığından azure.keyvault.secrets sınıfını kullanır. Bu istemci iki giriş gerektirir:
- Key Vault URL'si – genellikle bir ortam değişkeninden alınır
- Uygulamanın çalıştığı kimliği temsil eden, daha önce oluşturulan
DefaultAzureCredentialörneği gibi bir kimlik bilgisi nesnesi.
keyvault_client = SecretClient(vault_url=key_vault_url, credential=credential)
SecretClient Nesne oluşturmak uygulamanın kimliğini hemen doğrulamaz. İstemci yalnızca Key Vault URL'sini ve kimlik bilgisi nesnesini depolayan yerel bir yapıdır. Kimlik doğrulaması ve yetkilendirme yalnızca azure kaynağına rest API çağrısı oluşturan get_secretgibi bir işlemi istemci üzerinden çağırdığınızda gerçekleşir.
api_secret_name = os.environ["THIRD_PARTY_API_SECRET_NAME"]
vault_secret = keyvault_client.get_secret(api_secret_name)
# The "secret" from Key Vault is an object with multiple properties. The key we
# want for the third-party API is in the value property.
access_key = vault_secret.value
Bir uygulamanın kimliğine Azure Key Vault'a erişim izni verilmiş olsa bile, gizli değerleri okumak gibi belirli işlemleri gerçekleştirebilmesi için ayrıca açıkça yetkilendirilmiş olması gerekir. Bu izin olmadan, kimlik geçerli olsa da get_secret() araması başarısız olur. Bu izin sorununu gidermek için hazırlama betiği, Azure CLI komutu az keyvault set-policy kullanılarak uygulama için bir "gizli dizileri alma" erişim ilkesi ayarlar. Daha fazla bilgi için Key Vault Kimlik Doğrulaması ve Uygulamanıza Key Vault erişimi vermekonularına bakın. İkinci makalede, Azure portalını kullanarak erişim ilkesinin nasıl ayarlanacağı gösterilmektedir. (Makale yönetilen kimlik için de yazılmıştır, ancak yerel geliştirmede kullanılan bir hizmet asıl sorumlusu için de aynı şekilde geçerlidir.)
Son olarak, uygulama kodu bir Azure Depolama Kuyruğuna ileti yazabileceği istemci nesnesini ayarlar. Kuyruğun URL'si STORAGE_QUEUE_URLortam değişkenindedir.
queue_url = os.environ["STORAGE_QUEUE_URL"]
queue_client = QueueClient.from_queue_url(queue_url=queue_url, credential=credential)
Azure Key Vault'ta olduğu gibi uygulama, Azure Kuyruk Depolama ile etkileşim kurmak için Azure SDK'dan belirli bir istemci nesnesi kullanır. Bu durumda, azure-storage-queue kitaplığındaki QueueClient sınıfını kullanır.
İstemciyi başlatmak için uygulama, kuyruğun tam nitelikli URL'sini ve bir kimlik bilgisi nesnesini sağlayan from_queue_url yöntemini kullanır. Bu kimlik bilgisi nesnesi, uygulamanın çalıştığı kimliği temsil eden ve daha önce oluşturulan DefaultAzureCredential örneğidir.
Bu kılavuzda daha önce belirtildiği gibi, bu yetkilendirme uygulamanın kimliğine "Depolama Kuyruğu Veri Katkı Sağlayıcısı" rolü atanarak tanımlanır; bu kimlik, Azure'da yönetilen bir kimlik veya yerel geliştirme sırasında bir hizmet sorumlusu olabilir.
Bu rol ataması, sağlama betiğinde Azure CLI komutu az role assignment createkullanılarak yapılır.
Tüm bu başlangıç kodunun başarılı olduğunu varsayarsak, uygulamanın /api/v1/getcode API uç noktasını desteklemek için tüm iç değişkenleri vardır.