Flask Python-webalkalmazás létrehozása és üzembe helyezése az Azure-ban rendszer által hozzárendelt felügyelt identitással
Ebben az oktatóanyagban Python Flask-kódot helyez üzembe egy Azure-alkalmazás Service-ben futó webalkalmazás létrehozásához és üzembe helyezéséhez. A webalkalmazás a rendszer által hozzárendelt felügyelt identitást (jelszó nélküli kapcsolatokat) és az Azure szerepköralapú hozzáférés-vezérlését használja az Azure Storage és az Azure Database for PostgreSQL rugalmas kiszolgálói erőforrások eléréséhez. A kód a Pythonhoz készült Azure Identity-ügyfélkódtár DefaultAzureCredential osztályát használja. Az DefaultAzureCredential
osztály automatikusan észleli, hogy egy felügyelt identitás létezik az App Service-hez, és más Azure-erőforrások eléréséhez használja.
Az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokat a Service Csatlakozás or használatával konfigurálhatja, vagy manuálisan is konfigurálhatja őket. Ez az oktatóanyag bemutatja, hogyan használható a Service Csatlakozás or. A jelszó nélküli kapcsolatokról további információt az Azure-szolgáltatások jelszó nélküli kapcsolatai című témakörben talál. A Service Csatlakozás orról a Szolgáltatás Csatlakozás or dokumentációjában talál további információt.
Ez az oktatóanyag bemutatja, hogyan hozhat létre és helyezhet üzembe Python-webalkalmazásokat az Azure CLI használatával. Az oktatóanyagban szereplő parancsok Bash-rendszerhéjban való futtatásra vannak megírva. Az oktatóanyag-parancsokat bármely Bash-környezetben futtathatja a parancssori felület telepítésével, például a helyi környezetben vagy az Azure Cloud Shellben. Bizonyos módosításokkal – például környezeti változók beállításával és használatával – futtathatja ezeket a parancsokat más környezetekben, például a Windows parancshéjban. Ha például felhasználó által hozzárendelt felügyelt identitást használ, tekintse meg a Django-webalkalmazások létrehozását és üzembe helyezését az Azure-ban egy felhasználó által hozzárendelt felügyelt identitással.
Mintaalkalmazás letöltése
A Flask-keretrendszert használó Python-mintaalkalmazások segítenek az oktatóanyag követésében. Töltse le vagy klónozza az egyik mintaalkalmazást a helyi munkaállomásra.
Klónozza a mintát egy Azure Cloud Shell-munkamenetben.
git clone https://github.com/Azure-Samples/msdocs-flask-web-app-managed-identity.git
Lépjen az alkalmazásmappára.
cd msdocs-flask-web-app-managed-identity
Azure PostgreSQL-kiszolgáló létrehozása
Állítsa be az oktatóanyaghoz szükséges környezeti változókat.
LOCATION="eastus" RAND_ID=$RANDOM RESOURCE_GROUP_NAME="msdocs-mi-web-app" APP_SERVICE_NAME="msdocs-mi-web-$RAND_ID" DB_SERVER_NAME="msdocs-mi-postgres-$RAND_ID" ADMIN_USER="demoadmin" ADMIN_PW="ChAnG33#ThsPssWD$RAND_ID"
Fontos
A
ADMIN_PW
következő kategóriák közül háromnak 8–128 karaktert kell tartalmaznia: angol nagybetűk, angol kisbetűk, számok és nonalphanumerikus karakterek. Felhasználónevek vagy jelszavak létrehozásakor ne használja a karaktert$
. Később olyan környezeti változókat hoz létre ezekkel az értékekkel, amelyekben a$
karakter speciális jelentéssel rendelkezik a Python-alkalmazások futtatásához használt Linux-tárolóban.Hozzon létre egy erőforráscsoportot az az group create paranccsal.
az group create --location $LOCATION --name $RESOURCE_GROUP_NAME
Hozzon létre egy PostgreSQL-kiszolgálót az az postgres flexible-server create paranccsal. (Ez és az azt követő parancsok a Bash Shell ('\' ) sor folytatási karakterét használják. Szükség esetén módosítsa a rendszerhéj vonal-folytatási karakterét.)
az postgres flexible-server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --location $LOCATION \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --sku-name Standard_D2ds_v4
A termékváltozat neve a tarifacsomag és a számítási konfiguráció neve. További információkért tekintse meg az Azure Database for PostgreSQL díjszabását. Az elérhető termékváltozatok listázásához használja a következőt
az postgres flexible-server list-skus --location $LOCATION
: .Hozzon létre egy adatbázist
restaurant
az az postgres flexible-server execute paranccsal.az postgres flexible-server execute \ --name $DB_SERVER_NAME \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --database-name postgres \ --querytext 'create database restaurant;'
Azure-alkalmazás szolgáltatás létrehozása és a kód üzembe helyezése
App service létrehozása az az webapp up paranccsal.
az webapp up \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --runtime PYTHON:3.9 \ --sku B1
A termékváltozat határozza meg az App Service-csomag méretét (CPU, memória) és költségét. A B1 (alapszintű) szolgáltatáscsomag kis költséget von maga után az Azure-előfizetésben. Az App Service-csomagok teljes listájáért tekintse meg az App Service díjszabási oldalát.
Konfigurálja az App Service-t az adattárban található start.sh az az webapp config set paranccsal való használatára.
az webapp config set \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --startup-file "start.sh"
Jelszó nélküli összekötők létrehozása az Azure-erőforrásokhoz
A service Csatlakozás or parancsok konfigurálják az Azure Storage és az Azure Database for PostgreSQL-erőforrásokat a felügyelt identitás és az Azure szerepköralapú hozzáférés-vezérlés használatára. A parancsok alkalmazásbeállításokat hoznak létre az App Service-ben, amelyek a webalkalmazást ezekhez az erőforrásokhoz csatlakoztatják. A parancsok kimenete felsorolja a szolgáltatás-összekötő által a jelszó nélküli képesség engedélyezéséhez végrehajtott műveleteket.
Adjon hozzá egy PostgreSQL-szolgáltatás-összekötőt az az webapp connection create postgres-flexible paranccsal. Ebben az esetben a rendszer által hozzárendelt felügyelt identitással hitelesíti a webalkalmazást a célerőforrás, a PostgreSQL.
az webapp connection create postgres-flexible \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --server $DB_SERVER_NAME \ --database restaurant \ --client-type python \ --system-identity
Adjon hozzá egy tárolószolgáltatás-összekötőt az az webapp connection create storage-blob paranccsal.
Ez a parancs egy tárfiókot is hozzáad, és hozzáadja a tárfiókhoz a Storage Blob Data Közreműködő szerepkörrel rendelkező webalkalmazást.
STORAGE_ACCOUNT_URL=$(az webapp connection create storage-blob \ --new true \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --client-type python \ --system-identity \ --query configurations[].value \ --output tsv) STORAGE_ACCOUNT_NAME=$(cut -d . -f1 <<< $(cut -d / -f3 <<< $STORAGE_ACCOUNT_URL))
Tároló létrehozása a tárfiókban
A Python-mintaalkalmazás blobként tárolja a véleményezők által beküldött fényképeket a tárfiókban lévő tárolóban.
Amikor egy felhasználó elküld egy fényképet a véleményezésével, a mintaalkalmazás a rendszer által hozzárendelt felügyelt identitással a tárolóba írja a képet hitelesítés és engedélyezés céljából. Ezt a funkciót az utolsó szakaszban konfigurálta.
Amikor egy felhasználó megtekinti egy étterem véleményeit, az alkalmazás visszaad egy hivatkozást a blobtárolóban lévő fényképre minden olyan véleményhez, amelyhez hozzá van társítva egy. Ahhoz, hogy a böngésző megjeleníthesse a fényképet, hozzá kell tudnia férni a tárfiókban. A blobadatoknak névtelen (hitelesítés nélküli) hozzáféréssel nyilvánosan olvashatónak kell lenniük.
A biztonság növelése érdekében a tárfiókok alapértelmezés szerint letiltott névtelen hozzáféréssel jönnek létre a blobadatokhoz. Ebben a szakaszban engedélyezi a névtelen olvasási hozzáférést a tárfiókban, majd létrehoz egy tároló nevesített fényképeket , amely nyilvános (névtelen) hozzáférést biztosít a blobokhoz.
Frissítse a tárfiókot, hogy névtelen olvasási hozzáférést biztosítson a blobokhoz az az storage account update paranccsal.
az storage account update \ --name $STORAGE_ACCOUNT_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --allow-blob-public-access true
A névtelen hozzáférés engedélyezése a tárfiókon nem befolyásolja az egyes blobok hozzáférését. Explicit módon engedélyeznie kell a blobokhoz való nyilvános hozzáférést a tároló szintjén.
Hozzon létre egy fényképek nevű tárolót a tárfiókban az az storage container create paranccsal. Névtelen olvasási (nyilvános) hozzáférés engedélyezése a blobokhoz az újonnan létrehozott tárolóban.
az storage container create \ --account-name $STORAGE_ACCOUNT_NAME \ --name photos \ --public-access blob \ --account-key $(az storage account keys list --account-name $STORAGE_ACCOUNT_NAME \ --query [0].value --output tsv)
Feljegyzés
A rövidség kedvéért ez a parancs a tárfiók kulcsával engedélyezi a tárfiókot. A legtöbb forgatókönyv esetében a Microsoft ajánlott megközelítése a Microsoft Entra ID és az Azure (RBAC) szerepkörök használata. A rövid útmutatókért tekintse meg a blobok Azure CLI-vel való létrehozását, letöltését és listázását ismertető rövid útmutatót. Vegye figyelembe, hogy számos Azure-szerepkör lehetővé teszi tárolók létrehozását egy tárfiókban, beleértve a "Tulajdonos", a "Közreműködő", a "Storage Blob Data Owner" és a "Storage Blob Data Contributor" szerepkört.
A blobadatokhoz való névtelen olvasási hozzáférésről további információt a tárolók és blobok névtelen olvasási hozzáférésének konfigurálása című témakörben talál.
A Python-webalkalmazás tesztelése az Azure-ban
A minta Python-alkalmazás az azure.identity csomagot és annak osztályát DefaultAzureCredential
használja. Amikor az alkalmazás az Azure-ban fut, automatikusan észleli, DefaultAzureCredential
hogy létezik-e felügyelt identitás az App Service-hez, és ha igen, más Azure-erőforrások (ebben az esetben a storage és a PostgreSQL) eléréséhez használja. Ezeknek az erőforrásoknak a eléréséhez nem kell megadnia a tárkulcsokat, tanúsítványokat vagy hitelesítő adatokat az App Service-nek.
Keresse meg az üzembe helyezett alkalmazást az URL-címen
http://$APP_SERVICE_NAME.azurewebsites.net
.Az alkalmazás indítása akár egy-két percet is igénybe vehet. Ha olyan alapértelmezett alkalmazásoldalt lát, amely nem az alapértelmezett mintaalkalmazáslap, várjon egy percet, és frissítse a böngészőt.
Tesztelje a mintaalkalmazás funkcióit egy étterem hozzáadásával és néhány értékeléssel az étterem fényképeivel.
Az étterem és a felülvizsgálati információk az Azure Database for PostgreSQL-ben, a fényképek pedig az Azure Storage-ban vannak tárolva. Íme egy példa képernyőkép:
A fölöslegessé vált elemek eltávolítása
Ebben az oktatóanyagban az összes Azure-erőforrás ugyanabban az erőforráscsoportban lett létrehozva. Az erőforráscsoport eltávolítása az az group delete paranccsal eltávolítja az erőforráscsoport összes erőforrását, és ez a leggyorsabb módja az alkalmazáshoz használt összes Azure-erőforrás eltávolításának.
az group delete --name $RESOURCE_GROUP_NAME
Hozzáadhatja az --no-wait
argumentumot, hogy a parancs a művelet befejezése előtt visszatérjen.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: