Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Data API Builder gyorsan üzembe helyezhető az Azure-szolgáltatásokban, például az Azure Container Appsben az alkalmazásverem részeként. Ebben az oktatóanyagban az Azure CLI használatával automatizálhatja a Data API Builder Azure-ban való üzembe helyezésekor felmerülő gyakori feladatokat. Először hozzon létre egy tárolórendszerképet a Data API Builderrel, és tárolja az Azure Container Registryben. Ezután üzembe helyezheti a tárolórendszerképet az Azure Container Appsben egy háttérbeli Azure SQL-adatbázissal. A teljes oktatóanyag felügyelt identitások használatával hitelesíti az egyes összetevőket.
Ebben az útmutatóban Ön:
- Felügyelt identitás létrehozása szerepköralapú hozzáférés-vezérlési engedélyekkel
- Azure SQL üzembe helyezése az AdventureWorksLT minta-adatkészlettel
- A tárolórendszerkép előkészítése az Azure Container Registryben
- Az Azure Container App üzembe helyezése a Data API Builder tárolórendszerképével
Ha nincs Azure-előfizetésed, hozz létre egy ingyenes fiókot mielőtt elkezdenéd.
Előfeltételek
- Azure-előfizetés
- Azure Cloud Shell
- Az Azure Cloud Shell egy interaktív shell környezet, amelyet a böngészőn keresztül használhat. Ezzel a felülettel és annak előre telepített parancsaival futtathatja a jelen cikkben szereplő kódot anélkül, hogy bármit is telepítenie kellene a helyi környezetben. Az Azure Cloud Shell indítása:
- Válassza a Jelen cikk egyik kódjában vagy parancsblokkjában a Kipróbálás lehetőséget. A Kipróbálás lehetőség választása nem másolja automatikusan a kódot vagy a parancsot a Cloud Shellbe.
- Nyissa meg a https://shell.azure.comCloud Shellt, vagy válassza a Launch Cloud Shell (Cloud Shell indítása) lehetőséget.
- Válassza a Cloud Shellt az Azure Portal menüsávján (https://portal.azure.com)
- Az Azure Cloud Shell egy interaktív shell környezet, amelyet a böngészőn keresztül használhat. Ezzel a felülettel és annak előre telepített parancsaival futtathatja a jelen cikkben szereplő kódot anélkül, hogy bármit is telepítenie kellene a helyi környezetben. Az Azure Cloud Shell indítása:
Tárolóalkalmazás létrehozása
Először hozzon létre egy Azure Container Apps-példányt egy rendszer által hozzárendelt felügyelt identitással. Ez az identitás végül szerepköralapú hozzáférés-vezérlési engedélyeket kap az Azure SQL és az Azure Container Registry eléréséhez.
Hozzon létre egy univerzális
SUFFIXváltozót több erőforrásnévhez az oktatóanyag későbbi részében.let SUFFIX=$RANDOM*$RANDOMHozzon létre egy változót
LOCATIONaz oktatóanyagban használni kívánt Azure-régióval.LOCATION="<azure-region>"Megjegyzés:
Ha például a Nyugat-USA régiójában szeretné végrehajtani az üzembe helyezést, akkor ezt a szkriptet fogja használni.
LOCATION="westus"Az aktuális előfizetés támogatott régióinak listájához használja a
az account list-locationsaz account list-locations --query "[].{Name:displayName,Slug:name}" --output tableTovábbi információ: Azure-régiók.
Hozzon létre egy erőforráscsoport nevével elnevezett
RESOURCE_GROUP_NAMEváltozót. Ebben az oktatóanyagban azt javasoljukmsdocs-dab-*. Ezt az értéket az oktatóanyagban többször is használhatja.RESOURCE_GROUP_NAME="msdocs-dab$SUFFIX"Hozzon létre egy új erőforráscsoportot a következő használatával
az group create: .az group create \ --name $RESOURCE_GROUP_NAME \ --location $LOCATION \ --tag "source=msdocs-dab-tutorial"Az Azure Container Apps-példányhoz egyedileg létrehozott névvel rendelkező
API_CONTAINER_NAMECONTAINER_ENV_NAMEváltozókat hozhat létre. Ezeket a változókat az oktatóanyag során használhatja.API_CONTAINER_NAME="api$SUFFIX" CONTAINER_ENV_NAME="env$SUFFIX"Új Azure Container Apps-környezet létrehozásához használható
az containerapp env create.az containerapp env create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CONTAINER_ENV_NAME \ --logs-destination none \ --location $LOCATIONHozzon létre egy új tárolóalkalmazást a
mcr.microsoft.com/azure-databases/data-api-builderDAB-tároló lemezképe és aaz containerapp createparancs használatával. Ez a tárolóalkalmazás sikeresen fut, de nincs adatbázishoz csatlakoztatva.az containerapp create \ --resource-group $RESOURCE_GROUP_NAME \ --environment $CONTAINER_ENV_NAME \ --name $API_CONTAINER_NAME \ --image "mcr.microsoft.com/azure-databases/data-api-builder" \ --ingress "external" \ --target-port "5000" \ --system-assignedSzerezze be a felügyelt identitás
az identity showazonosítóját, és tárolja az értéket egy nevesítettMANAGED_IDENTITY_PRINCIPAL_IDváltozóban.MANAGED_IDENTITY_PRINCIPAL_ID=$( \ az containerapp show \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --query "identity.principalId" \ --output "tsv" \ )Jótanács
A parancs kimenetét mindig ellenőrizheti.
echo $MANAGED_IDENTITY_PRINCIPAL_ID
Engedélyek hozzárendelése
Most rendelje hozzá a rendszer által hozzárendelt felügyelt identitásengedélyeket, hogy adatokat olvasson be az Azure SQL-ből és az Azure Container Registryből. Emellett rendelje hozzá az identitásengedélyeket az Azure Container Registryhez való íráshoz.
Hozzon létre egy változót
RESOURCE_GROUP_ID, amely az erőforráscsoport azonosítóját tárolja. Az azonosító lekérése aaz group showsegítségével. Ebben az oktatóanyagban ezt a változót többször is használhatja.RESOURCE_GROUP_ID=$( \ az group show \ --name $RESOURCE_GROUP_NAME \ --query "id" \ --output "tsv" \ )Jótanács
A parancs kimenetét mindig ellenőrizheti.
echo $RESOURCE_GROUP_IDHasználja a
az role assignment create-t az AcrPush szerepkör hozzárendeléséhez a fiókjához, hogy tárolókat küldhessen az Azure Container Registrybe.CURRENT_USER_PRINCIPAL_ID=$( \ az ad signed-in-user show \ --query "id" \ --output "tsv" \ ) # AcrPush az role assignment create \ --assignee $CURRENT_USER_PRINCIPAL_ID \ --role "8311e382-0749-4cb8-b61a-304f252e45ec" \ --scope $RESOURCE_GROUP_IDRendelje hozzá a felügyelt identitáshoz ismét az AcrPull szerepkört
az role assignment createhasználatával. Ez a hozzárendelés lehetővé teszi, hogy a felügyelt identitás lekérje a tárolólemezképeket az Azure Container Registryből. A felügyelt identitás végül egy Azure Container Apps-példányhoz lesz hozzárendelve.# AcrPull az role assignment create \ --assignee $MANAGED_IDENTITY_PRINCIPAL_ID \ --role "7f951dda-4ed3-4680-a7ca-43fe172d538d" \ --scope $RESOURCE_GROUP_ID
Adatbázis üzembe helyezése
Ezután helyezzen üzembe egy új kiszolgálót és adatbázist az Azure SQL szolgáltatásban. Az adatbázis az AdventureWorksLT mintaadatkészletet használja.
Hozzon létre egy egyedileg létrehozott névvel ellátott
SQL_SERVER_NAMEváltozót az Azure SQL Server-példányhoz. Ezt a változót a szakasz későbbi részében fogja használni.SQL_SERVER_NAME="srvr$SUFFIX"Hozzon létre egy új Azure SQL Server erőforrást a
az sql server createhasználatával. Konfigurálja a felügyelt identitást a kiszolgáló rendszergazdájaként.az sql server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $SQL_SERVER_NAME \ --location $LOCATION \ --enable-ad-only-auth \ --external-admin-principal-type "User" \ --external-admin-name $API_CONTAINER_NAME \ --external-admin-sid $MANAGED_IDENTITY_PRINCIPAL_IDAz Azure-szolgáltatások hozzáférésének engedélyezéséhez használjuk a
az sql server firewall-rule createtűzfalszabály létrehozását.az sql server firewall-rule create \ --resource-group $RESOURCE_GROUP_NAME \ --server $SQL_SERVER_NAME \ --name "AllowAzure" \ --start-ip-address "0.0.0.0" \ --end-ip-address "0.0.0.0"Adatbázis
az sql db createlétrehozása az Azure SQL Serveren belül.adventureworksKonfigurálja az adatbázist aAdventureWorksLTmintaadatok használatára.az sql db create \ --resource-group $RESOURCE_GROUP_NAME \ --server $SQL_SERVER_NAME \ --name "adventureworks" \ --sample-name "AdventureWorksLT"Hozzon létre egy, az Azure SQL Server-példányban lévő adatbázis kapcsolati
SQL_CONNECTION_STRINGsztringjével elnevezettadventureworksváltozót. Hozza létre a kapcsolati sztringet a kiszolgáló teljes tartománynevével aaz sql server showhasználatával. Ezt a változót az oktatóanyag későbbi részében fogja használni.SQL_SERVER_ENDPOINT=$( \ az sql server show \ --resource-group $RESOURCE_GROUP_NAME \ --name $SQL_SERVER_NAME \ --query "fullyQualifiedDomainName" \ --output "tsv" \ ) SQL_CONNECTION_STRING="Server=$SQL_SERVER_ENDPOINT;Database=adventureworks;Encrypt=true;Authentication=Active Directory Default;"Jótanács
A parancs kimenetét mindig ellenőrizheti.
echo $SQL_CONNECTION_STRING
Konténerkép létrehozása
Ezután hozzon létre egy tárolórendszerképet egy Dockerfile használatával. Ezután helyezze üzembe a tárolórendszerképet egy újonnan létrehozott Azure Container Registry-példányon.
Hozzon létre egy egyedileg létrehozott névvel ellátott
CONTAINER_REGISTRY_NAMEváltozót az Azure Container Registry-példányhoz. Ezt a változót a szakasz későbbi részében fogja használni.CONTAINER_REGISTRY_NAME="reg$SUFFIX"Hozzon létre egy új Azure Container Registry-példányt a .
az acr createaz acr create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CONTAINER_REGISTRY_NAME \ --sku "Standard" \ --location $LOCATION \ --admin-enabled falseHozzon létre egy többfázisú Dockerfile nevű
Dockerfile. A fájlban hajtsa végre ezeket a lépéseket.mcr.microsoft.com/dotnet/sdkA tárolórendszerkép használata a buildelési fázis alapjakéntTelepítse a DAB CLI-t.
Hozzon létre egy konfigurációs fájlt egy SQL-adatbázis-kapcsolathoz (
mssql) aDATABASE_CONNECTION_STRINGkörnyezeti változóval kapcsolati sztringként.Hozzon létre egy
Producttáblához hozzárendelt entitástSalesLT.Product.Másolja a konfigurációs fájlt a végső tárolórendszerképbe
mcr.microsoft.com/azure-databases/data-api-builder.
FROM mcr.microsoft.com/dotnet/sdk:8.0-cbl-mariner2.0 AS build WORKDIR /config RUN dotnet new tool-manifest RUN dotnet tool install Microsoft.DataApiBuilder RUN dotnet tool run dab -- init --database-type "mssql" --connection-string "@env('DATABASE_CONNECTION_STRING')" RUN dotnet tool run dab -- add Product --source "SalesLT.Product" --permissions "anonymous:read" FROM mcr.microsoft.com/azure-databases/data-api-builder COPY --from=build /config /AppÉpítse a Dockerfile-t Azure Container Registry feladatként a
az acr buildhasználatával.az acr build \ --registry $CONTAINER_REGISTRY_NAME \ --image adventureworkslt-dab:latest \ --image adventureworkslt-dab:{{.Run.ID}} \ --file Dockerfile \ .A tárolóregisztrációs adatbázis végpontjának lekérésére és tárolására használható
az acr showegy nevesítettCONTAINER_REGISTRY_LOGIN_SERVERváltozóban.CONTAINER_REGISTRY_LOGIN_SERVER=$( \ az acr show \ --resource-group $RESOURCE_GROUP_NAME \ --name $CONTAINER_REGISTRY_NAME \ --query "loginServer" \ --output "tsv" \ )Jótanács
A parancs kimenetét mindig ellenőrizheti.
echo $CONTAINER_REGISTRY_LOGIN_SERVER
Konténerkép üzembe helyezése
Végül frissítse az Azure Container App alkalmazást az új egyéni tárolórendszerképpel és hitelesítő adatokkal. Tesztelje a futó alkalmazást az adatbázishoz való kapcsolódás ellenőrzéséhez.
Konfigurálja a tárolóalkalmazást a tárolóregisztrációs adatbázis
az containerapp registry sethasználatára.az containerapp registry set \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --server $CONTAINER_REGISTRY_LOGIN_SERVER \ --identity "system"Az
az containerapp secret setparancs segítségével hozzon létre egyconn-stringnevű titkot az Azure SQL kapcsolati sztringjével.az containerapp secret set \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --secrets conn-string="$SQL_CONNECTION_STRING"Fontos
Ez a kapcsolati sztring nem tartalmaz felhasználónevet vagy jelszót. A kapcsolati sztring a felügyelt identitást használja az Azure SQL-adatbázis eléréséhez. Így biztonságosan használhatja a kapcsolati sztringet titkos kódként a gazdagépen.
Frissítse a tárolóalkalmazást az új egyéni tárolórendszerkép használatával
az containerapp update. Állítsa be aDATABASE_CONNECTION_STRINGkörnyezeti változót a korábban létrehozottconn-stringtitkos kódból való olvasásra.az containerapp update \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --image "$CONTAINER_REGISTRY_LOGIN_SERVER/adventureworkslt-dab:latest" \ --set-env-vars DATABASE_CONNECTION_STRING=secretref:conn-stringKérdezze le a működő tárolóalkalmazás legújabb verziójának teljesen képzett tartománynevét a
az containerapp showhasználatával. Ezt az értéket egy névvel ellátottAPPLICATION_URLváltozóban tárolja.APPLICATION_URL=$( \ az containerapp show \ --resource-group $RESOURCE_GROUP_NAME \ --name $API_CONTAINER_NAME \ --query "properties.latestRevisionFqdn" \ --output "tsv" \ )Jótanács
A parancs kimenetét mindig ellenőrizheti.
echo $APPLICATION_URLLépjen az URL-címre, és tesztelje a
ProductREST API-t.echo "https://$APPLICATION_URL/api/Product"Figyelmeztetés
Az üzembe helyezés akár egy percet is igénybe vehet. Ha nem látja a sikeres választ, várjon, és frissítse a böngészőt.
Erőforrások tisztítása
Ha már nincs szüksége a mintaalkalmazásra vagy erőforrásokra, távolítsa el a megfelelő üzembe helyezést és az összes erőforrást.
az group delete \
--name $RESOURCE_GROUP_NAME
Következő lépés
Az Application Insights használata a Data API Builderrel