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.
Bu kılavuzda, kapsayıcı görüntülerini oluşturmadan veya yönetmeden Azure App Service için Veri API'si Oluşturucusu'nu (DAB) nasıl dağıtabileceğiniz gösterilir. App Service TLS, özel etki alanları, ölçeklendirme, izleme ve Microsoft Entra kimlik doğrulaması için yerleşik destek sağlar.
Tip
Ortamınızda kapsayıcılar kullanılıyorsa bkz. Deploy to Azure Container Apps veya Deploy to Azure Kubernetes Service.
Prerequisites
- Aktif bir aboneliğe sahip bir Azure hesabı. Ücretsiz bir hesap oluşturun.
- Veri API'si oluşturucu CLI. CLI'yi yükleyin.
- Azure CLI. Azure CLI'yi yükleyin.
- Yerel geliştirme veya derleme makinenizde .NET 8 SDK veya üzeri yüklü olmalıdır.
- Azure erişebildiği mevcut bir desteklenen veritabanı.
Important
Yerleşik .NET App Service yığını .NET çalışma zamanını içerir, ancak .NET SDK'sını içermez. DAB'yi geri yükleyin ve dağıtım paketini yerel geliştirme veya derleme makinenizde derleyin. App Service başladığında dotnet tool restore öğesini çalıştırmayın.
Yapılandırma dosyasını oluşturma
Mevcut veritabanınıza bağlanmak için bir DAB yapılandırma dosyası oluşturun.
Yapılandırma dosyasını ve dağıtım yapıtlarını depolamak için yerel makinenizde boş bir dizin oluşturun.
kullanarak
dab inityeni bir temel yapılandırma dosyası başlatın.@env()işlevini, kimlik bilgilerinin yapılandırma dosyasında depolanmasını önlemek içinDATABASE_CONNECTION_STRINGortam değişkenine başvurmak amacıyla kullanın.dab init --database-type "<database-type>" --connection-string "@env('DATABASE_CONNECTION_STRING')"Important
öğesini, , , veya gibi desteklenen bir veritabanı türüyle değiştirin. Bazı veritabanı türleri başlatma için ek yapılandırma ayarları gerektirir. Yapılandırmaya en az bir veritabanı varlığı ekleyin.
dab addBir varlığı yapılandırmak için komutunu kullanın. Gerektiği kadar çok varlıklarınız içindab addparçasını tekrarlayın.dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"dab-config.json dosyasının içeriğini açın ve gözden geçirin. Aşağıdakileri doğrulayın:
-
data-source.connection-stringkullanır@env('DATABASE_CONNECTION_STRING') - Varlıklarınız ve izinleriniz doğru
Important
Sabit bağlantı dizelerini veya gizli anahtarları
dab-config.jsoniçerisine gömmeyin.@env()işlevini kullanarak değerlerin çalışma zamanında ortam değişkenlerinden çözümlenmesini sağlayın.-
Derleme için DAB'yi sabitleme
Geliştirme veya derleme makinenizde DAB sürümünü sabitlemek için yerel bir .NET araç bildirimi kullanın. Bildirim, derlemelerin yeniden üretilebilir olmasını sağlar, ancak geri yüklenen DAB ikili dosyalarını içermez. Bu ikili dosyaları bu kılavuzun ilerleyen bölümlerinde dağıtım paketine kopyalayacaksınız.
Proje dizininizde bir .NET yerel araç bildirimi oluşturun.
dotnet new tool-manifestBelirli bir Data API builder sürümünü yerel bir araç olarak yükleyin.
<dab-version>öğesini, dağıtmak istediğiniz sürümle değiştirin; örneğin2.0.9.dotnet tool install microsoft.dataapibuilder --version "<dab-version>"Manifesto'nun
.config/dotnet-tools.jsonkonumunda mevcut olduğunu doğrulayın.Geliştirme veya derleme makinesinde sabitlenmiş aracı geri yükleyin.
dotnet tool restoreNote
Geri yükleme işlemi yerel NuGet paket önbelleğini doldurur. App Service dağıtım paketi geri yüklenen çalışma zamanı yükünü içermelidir; yalnızca
.config/dotnet-tools.jsondağıtmak yeterli değildir.
Yerel olarak test et
Azure dağıtmadan önce çalışma zamanının başladığını ve uç noktalarınızın çalıştığını onaylayın.
bağlantı dizesi yerel ortam değişkeni olarak ayarlayın.
$env:DATABASE_CONNECTION_STRING = "<your-connection-string>"DAB çalışma zamanını yerel olarak başlatın.
dotnet tool run dab startSwagger kullanıcı arabirimine giderek veya
/api/<entity-name>'a istekte bulunarak REST uç noktasını test edin.GraphQL uç noktasını
/graphqladresinde test edin.Tüm uç noktaları doğruladıktan sonra çalışma zamanını durdurun.
App Service kaynaklarını oluşturma
App Service'te DAB barındırmak için gereken Azure kaynaklarını oluşturun.
Yeni bir kaynak grubu oluşturun. Bu kılavuzdaki tüm yeni kaynaklar için bu kaynak grubunu kullanırsınız.
az group create --name "<resource-group-name>" --location "<location>"Tip
msdocs-dab-appservice kaynak grubunu adlandırmayı göz önünde bulundurun.
App Service planı oluşturun.
az appservice plan create --name "<plan-name>" --resource-group "<resource-group-name>" --sku B1 --is-linuxNote
Bu kılavuz, Linux'ta B1 (Temel) katmanını kullanır.
.NET 8 çalışma zamanı ve sistem tarafından atanan yönetilen kimlik ile web uygulamasını oluşturun.
az webapp create --name "<app-name>" --resource-group "<resource-group-name>" --plan "<plan-name>" --runtime "DOTNETCORE:8.0" --assign-identity "[system]"Tip
ile
az webapp list-runtimes --os linuxplanınız için kullanılabilir çalışma zamanlarını doğrulayın.
App Service ayarlarını yapılandırma
App Service'in DAB çalıştırmak için ihtiyaç duyduğu ortam değişkenlerini ve başlangıç komutunu yapılandırın.
Veritabanı bağlantı dizesini bir App Service uygulama ayarı olarak ayarlayın.
az webapp config appsettings set --name "<app-name>" --resource-group "<resource-group-name>" --settings DATABASE_CONNECTION_STRING="<your-connection-string>"Tip
Sırlar içermeyen bir bağlantı dizesi kullanın. Bunun yerine, veritabanınızla App Service arasındaki erişimi yönetmek için yönetilen kimlikleri ve Microsoft Entra kimlik doğrulamasını kullanın. Daha fazla bilgi için bkz. Yönetilen kimlikleri kullanan Azure hizmetleri.
DAB'ın dinlediği adresi yapılandırın. Bağlantı noktası
8080, yerleşik Linux App Service yığını için uygulama bağlantı noktasıdır.az webapp config appsettings set --name "<app-name>" --resource-group "<resource-group-name>" --settings ASPNETCORE_URLS="http://0.0.0.0:8080"İlk dağıtımdan önce Always On ve dosya sistemi günlüğünü etkinleştirin. Always On, bu kılavuzda kullanılan B1 katmanında kullanılabilir.
az webapp config set --name "<app-name>" --resource-group "<resource-group-name>" --always-on true az webapp log config --name "<app-name>" --resource-group "<resource-group-name>" --application-logging filesystem --docker-container-logging filesystem --level informationDağıtım paketine dahil edilen DAB çalışma zamanı bileşenini başlatan bir başlatma betiği oluşturun. Proje dizininizde adlı
startup.shbir dosya oluşturun.#!/bin/sh set -eu exec dotnet ./dab/Microsoft.DataApiBuilder.dll start --config ./dab-config.jsonImportant
startup.sh'nin CRLF yerine LF (Unix) satır sonları kullandığından emin olun. Windows düzenleyicileri varsayılan olarak CRLF ile kaydedebilir ve bu da betiğin Linux App Service ana bilgisayarında başarısız olmasına neden olur.App Service'te başlangıç komutunu ayarlayın.
az webapp config set --name "<app-name>" --resource-group "<resource-group-name>" --startup-file "sh startup.sh"
Azure SQL için yönetilen kimliği yapılandırma
Veri kaynağınız Azure SQL ise web uygulamasının sistem tarafından atanan yönetilen kimliğini veritabanında yetkilendirin. Farklı bir veritabanı veya kimlik doğrulama yöntemi kullanıyorsanız bu bölümü atlayın.
Hedef veritabanına Microsoft Entra yöneticisi olarak bağlanın.
Web uygulaması kimliği için bir bağımsız veritabanı kullanıcısı oluşturun ve yalnızca DAB varlıklarınız için gereken izinleri verin. Aşağıdaki örnek okuma ve yazma işlemlerini destekler.
CREATE USER [<app-name>] FROM EXTERNAL PROVIDER; ALTER ROLE [db_datareader] ADD MEMBER [<app-name>]; ALTER ROLE [db_datawriter] ADD MEMBER [<app-name>];Note
Microsoft Entra kimlik yayma işlemi web uygulaması oluşturulduktan sonra birkaç dakika sürebilir.
CREATE USERkimliği hemen çözümleyemezse, bekleyin ve yeniden deneyin.DATABASE_CONNECTION_STRINGöğesini Azure SQL yönetilen kimlik bağlantı dizesi olarak ayarlayın.az webapp config appsettings set --name "<app-name>" --resource-group "<resource-group-name>" --settings DATABASE_CONNECTION_STRING="Server=tcp:<sql-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;Authentication=Active Directory Managed Identity;Encrypt=True;TrustServerCertificate=False;"
App Service’e dağıtım yapın
Geri yüklenen DAB çalışma zamanını uygulama dizininize kopyalayın, ardından ZIP dağıtımı kullanarak dizini dağıtın.
DAB yapılandırmasını, başlangıç betiğini ve geri yüklenen çalışma zamanı yükünü içeren bir uygulama dizini oluşturun.
Örneklerde DAB sürümü
2.0.9kullanılır. Sürümü,.config/dotnet-tools.jsoniçinde sabitlediğiniz sürümle aynı sürüm olarak ayarlayın.$dabVersion = "2.0.9" $globalPackages = (dotnet nuget locals global-packages --list) -replace '^global-packages:\s*', '' $dabPayload = Join-Path $globalPackages "microsoft.dataapibuilder/$dabVersion/tools/net8.0/any" $appDirectory = Join-Path (Get-Location) "app" Remove-Item $appDirectory -Recurse -Force -ErrorAction SilentlyContinue New-Item -ItemType Directory -Path (Join-Path $appDirectory "dab") -Force | Out-Null Copy-Item dab-config.json, startup.sh -Destination $appDirectory Copy-Item (Join-Path $dabPayload "*") -Destination (Join-Path $appDirectory "dab") -Recurse if (-not (Test-Path (Join-Path $appDirectory "dab/Microsoft.DataApiBuilder.dll"))) { throw "The restored DAB runtime payload wasn't found." }Important
Sabitlenmiş DAB aracını geri yüklediğiniz aynı makinede bu komutları çalıştırın. Ortamınız NuGet genel paket dizinini geçersiz kılarsa,
dotnet nuget localsbu dizinin konumunu belirler.Taşınabilir
/giriş ayırıcıları olan bir ZIP oluşturun. Arşiv kökü,dab-config.json,startup.shvedab/dizinini doğrudan içermelidir.appüst dizinini sıkıştırmayın.Remove-Item deploy.zip -Force -ErrorAction SilentlyContinue tar.exe -a -c -f deploy.zip -C $appDirectory dab-config.json startup.sh dabWarning
Windows'ta,
Compress-Archiveiç içe girdileri\ayırıcılarıyla depolayabilir. Kudu ZIP dağıtımı bu arşivi HTTP 400 ile reddedebilir. Ayırıcıları/depolayan bir ZIP aracı kullanın ve dağıtım ayrıntıları olmadan HTTP 400 döndürüyorsa arşiv girdilerini inceleyin.ZIP paketini App Service'e dağıtın.
az webapp deploy --resource-group "<resource-group-name>" --name "<app-name>" --src-path deploy.zip --type zip --clean true --restart false --timeout 600000Dağıtım tamamlandıktan sonra web uygulamasını yeniden başlatın.
az webapp restart --resource-group "<resource-group-name>" --name "<app-name>"
Dağıtımı doğrulayın.
Dağıtımdan sonra DAB'nin App Service'te başarıyla başlatıldığını onaylayın.
App Service URL'sini açın. Kök yanıt, DAB durumunu ve sürümünü içerir.
https://<app-name>.azurewebsites.netYerel olarak test ettiğiniz varlık yollarını kullanarak REST ve GraphQL uç noktalarını test edin. Dağıtılan uygulama aynı
dab-config.jsonkullanır, bu nedenle uç nokta davranışı yerel çalışma zamanınızla eşleşmelidir.https://<app-name>.azurewebsites.net/api/<entity-name> https://<app-name>.azurewebsites.net/graphqlNote
Üretim modunda,
/healtharayanın kapsamlı sistem durumu raporunu görüntüleme yetkisi olmadığında HTTP 403 döndürebilir. Kök ve yetkili varlık uç noktaları başarıyla yanıt verirse,/healthöğesinden gelen 403 yanıtı bir başlatma başarısızlığına işaret etmez.Uç nokta beklenmeyen bir hata döndürürse uygulama günlüklerini gözden geçirin veya indirin. Bu kılavuzda, dağıtımdan önce günlüğe kaydetme etkinleştirildi.
az webapp log tail --name "<app-name>" --resource-group "<resource-group-name>" az webapp log download --name "<app-name>" --resource-group "<resource-group-name>" --log-file appservice-logs.zip
Kimlik doğrulamayı yapılandırma (isteğe bağlı)
Üretim kullanımı için Microsoft Entra ID ile App Service uç noktanızı koruyun.
Ayrıntılı adımlar için bkz. App Service kimlik doğrulamasını yapılandırma.
App Service kimlik doğrulamasını etkinleştirdikten sonra, DAB'yi App Service tarafından eklenen kimlik üst bilgilerine güvenecek şekilde yapılandırın. Geliştirme makinenizde bu komutu çalıştırın, ardından ZIP paketini yeniden derleyin ve yeniden dağıtın.
dab configure --runtime.host.authentication.provider AppService
Important
içindeki AppService kimlik doğrulama sağlayıcısı dab-config.json , App Service kimlik doğrulaması tarafından eklenen üst bilgilere güvenir. Bu sağlayıcı üretimde kullanılırken App Service kimlik doğrulamasının etkinleştirildiğinden emin olun. Daha fazla bilgi için bkz. Kolay Kimlik Doğrulaması (App Service).
Note
App Service kimlik doğrulaması uç noktanıza girişi korur. DAB varlık izinleri, çalışma zamanının hangi işlemlere izin verdiğine karar verir. Anonim bir demo için App Service kimlik üst bilgilerine güvenmeyin. Rol tabanlı erişim için App Service kimlik doğrulamasını etkinleştirin ve varlık izinlerinizi, anonymous:* yerine kimliği doğrulanmış veya özel rolleri kullanacak şekilde güncelleştirin.
Dağıtım sorunlarını giderme
Yaygın dağıtım sorunlarını belirlemek için aşağıdaki belirtileri kullanın.
| Belirti | Neden ve çözüm |
|---|---|
| ZIP dağıtımı, ayrıntılar olmadan HTTP 400 döndürür | ZIP kökünü ve giriş ayırıcılarını inceleyin. ZIP'i / ayırıcılarıyla yeniden oluşturun ve doğrudan dab-config.json, startup.sh ve dab/ içerdiğinden emin olun. |
Uygulama HTTP 503 döndürüyor ve günlüklerde No .NET SDKs were found veya The application 'tool' does not exist bulunuyor |
Başlangıç komutu dotnet tool öğesini çalıştırmaya çalışıyor. Geri yüklenen DAB yüküyle paketi yeniden derleyin ve doğrudan çağırın Microsoft.DataApiBuilder.dll . |
| Başlatma kullanıcı komutuna ulaşır ancak App Service ısınma işlemi başarısız olur | Başlangıç betiğinin LF satır sonlarını kullandığını doğrulayın, sh startup.sh kullanın, DAB payload yollarını onaylayın ve günlüklerde dinleme URL’sini ve veritabanı hatalarını kontrol edin. |
| DAB başlatılır ancak veritabanı istekleri başarısız olur | Web uygulaması yönetilen kimliğinin veritabanı kullanıcısı olarak var olduğunu ve yapılandırılan varlıklar için gerekli izinlere sahip olduğunu doğrulayın. |
/health REST veya GraphQL çalışırken HTTP 403 döndürür |
DAB çalışıyor, ancak arayanın kapsamlı sistem durumu raporunu görüntüleme yetkisi yok. Bunun yerine kök veya yetkili varlık uç noktasını doğrulayın. |
| Daha büyük bir ZIP dağıtımı HTTP 502 döndürür | Yeniden denemeden önce dağıtım geçmişini denetleyin. Belirtilmiş bir zaman aşımıyla eşzamanlı olarak dağıtın, örtük yeniden başlatmayı devre dışı bırakın ve dağıtım tamamlandıktan sonra yeniden başlatın. |
Kaynakları temizle
Web uygulamasına ve kaynaklarına artık ihtiyacınız kalmadığında kaynak grubunu silin.
az group delete --name "<resource-group-name>" --yes --no-wait