Dela via


Aspire Azure App Service-integrering (förhandsversion)

Inkluderar: Värdintegrering ingår Endast värdintegrering – Hosting integration included integration not included integrering ingår inte

Viktigt!

App Service-integreringen AspireAzure är för närvarande i förhandsversion och kan komma att ändras.

Azure App Service är en fullständigt hanterad plattform för att skapa, distribuera och skala webbappar. Aspire appar körs ofta lokalt under utveckling men kräver skalbara, produktionsklara värdmiljöer för mellanlagring och produktion. Med integreringen Aspire kan du etablera eller referera till en befintlig Azure App Service-miljö (App Service-plan) och sömlöst publicera din container, körbara resurser och projektresurser som Azure App Service-webbplatser. När du lägger till en App Service-miljö etablerar integreringen automatiskt ett Azure containerregister för containerbaserade distributioner och beviljar detaljerade rolltilldelningar för att möjliggöra säker åtkomst mellan Azure resurser.

Integrering av värdtjänster

Azure App Service-integreringen är en del av Aspire värdmodellen. Det gör att du kan definiera och hantera appens resurser på ett deklarativt sätt. Integreringen är tillgänglig i 📦Aspire. Hosting.Azure. AppService NuGet-paket.

dotnet add package Aspire.Hosting.Azure.AppService

Mer information finns i dotnet lägg till paket eller Hantera paketberoenden i .NET applikationer.

Lägga till Azure App Service-miljö

Om du vill använda Azure App Service med Aspirelägger du först till en App Service-miljö i ditt AppHost-projekt. Miljön representerar den värdinfrastruktur (App Service-plan) där dina appar ska köras.

var builder = DistributedApplication.CreateBuilder(args);

var appServiceEnv = builder.AddAzureAppServiceEnvironment("app-service-env");

// Add other resources to the app model

builder.Build().Run();

Föregående kod skapar en ny Azure App Service-miljö med namnet app-service-env. När du kör appen lokalt etableras den här miljön i din Azure prenumeration med följande resurser:

  • En App Service-plan med en Premium P0V3-nivå på Linux.
  • Ett Azure Container Registry (Basic SKU) för containeravbildningslagring.
  • En användartilldelad hanterad identitet för säker åtkomst till containerregistret.

Viktigt!

När du anropar AddAzureAppServiceEnvironmentanropas implicit AddAzureProvisioning– vilket ger stöd för att generera Azure resurser dynamiskt under appstarten. Appen måste konfigurera lämplig prenumeration och plats. För mer information, se Lokal tillhandahållande: Konfiguration.

Ansluta till en befintlig Azure App Service-plan

Du kanske har en befintlig Azure App Service-plan som du vill använda. Koppla ett anrop för att markera att din AzureAppServiceEnvironmentResource är en befintlig resurs.

var builder = DistributedApplication.CreateBuilder(args);

var existingAppServicePlanName = builder.AddParameter("existingAppServicePlanName");
var existingResourceGroup = builder.AddParameter("existingResourceGroup");

var appServiceEnv = builder.AddAzureAppServiceEnvironment("app-service-env")
                           .AsExisting(existingAppServicePlanName, existingResourceGroup);

builder.AddProject<Projects.WebApi>("api")
       .PublishAsAzureAppServiceWebsite((infra, website) =>
       {
           // Optional: customize the Azure App Service website here
       });

// After adding all resources, run the app...

Viktigt!

När du anropar RunAsExisting, PublishAsExistingeller AsExisting metoder för att arbeta med resurser som redan finns i din Azure prenumeration, måste du lägga till vissa konfigurationsvärden i AppHost för att säkerställa att Aspire de kan hittas. De nödvändiga konfigurationsvärdena är SubscriptionId, AllowResourceGroupCreation, ResourceGroup och Location. Om du inte anger dem, visas "Konfiguration saknas"-fel på instrumentpanelen Aspire. Mer information om hur du anger dem finns i Konfiguration.

Mer information om hur du behandlar Azure App Service-resurser som befintliga resurser finns i Använda befintliga Azure resurser.

Anmärkning

Du kan också lägga till en anslutningssträng i AppHost i stället för att representera en Azure App Service-miljöresurs. Den här metoden är svagt skriven och fungerar inte med rolltilldelningar eller infrastrukturanpassningar. För mer information, se Lägg till befintliga Azure resurser med anslutningssträngar.

Publicera resurser som Azure App Service-webbsidor

När du har lagt till en App Service-miljö kan du publicera beräkningsresurser (IComputeResource) som Azure App Service-webbplatser med hjälp av PublishAsAzureAppServiceWebsite metoden.

var builder = DistributedApplication.CreateBuilder(args);

var appServiceEnv = builder.AddAzureAppServiceEnvironment("app-service-env");

builder.AddProject<Projects.WebApi>("api")
       .PublishAsAzureAppServiceWebsite((infra, website) =>
       {
           // Optional: customize the Azure App Service website here
       });

builder.Build().Run();

Föregående kod:

  • Skapar en Azure App Service-miljö med namnet app-service-env.
  • Lägger till ett projekt med namnet api till AppHost.
  • Konfigurerar att projektet ska publiceras som en Azure App Service-webbplats.
  • Tillhandahåller ett valfritt återanrop för att anpassa webbplatskonfigurationen.

Under lokal utveckling (när du kör med F5) körs projektet lokalt. När du publicerar din app distribueras projektet som en Azure App Service-webbplats i den etablerade miljön.

Anpassa App Service-webbplatsen

Metoden PublishAsAzureAppServiceWebsite accepterar ett återanrop som gör att du kan anpassa Azure App Service-webbplatskonfigurationen Azuremed hjälp av . Etablerings-API :er:

builder.AddProject<Projects.WebApi>("api")
       .PublishAsAzureAppServiceWebsite((infra, website) =>
       {
           website.AppSettings.Add("ASPNETCORE_ENVIRONMENT", new AppServiceConfigurationSetting
           {
               Name = "ASPNETCORE_ENVIRONMENT",
               Value = "Production"
           });
           
           website.Tags.Add("Environment", "Production");
           website.Tags.Add("Team", "Engineering");
       });

Föregående kod:

  • Kedjar ett anrop till PublishAsAzureAppServiceWebsite med en återanropsfunktion för anpassning.
  • Lägger till en programinställning för ASPNETCORE_ENVIRONMENT.
  • Lägger till flera taggar för metadata och organisation.

Anmärkning

Du kan konfigurera många andra egenskaper för App Service-webbplatsen med den här metoden. En fullständig lista över tillgängliga konfigurationsalternativ finns i WebSite.

Konfigurationsgenererad Bicep

Om du inte har använt Bicep tidigare är det ett domänspecifikt språk för att Azure definiera resurser. Med .NETAspirebehöver du inte skriva Bicep för hand, i stället genererar etablerings-API:erna Bicep åt dig. När du publicerar din app genereras Bicep-filen tillsammans med manifestfilen.

När du lägger till en Azure App Service-miljö etableras följande viktiga resurser:

  • App Service Plan: En Premium P0V3-baserad Linuxhostingplan.
  • Azure Container Registry: Ett grundläggande SKU-register för lagring av containeravbildningar.
  • Användartilldelad hanterad identitet: För säker åtkomst mellan App Service och Container Registry.
  • Rolltilldelningar: ACR Pull-roll tilldelad till den hanterade identiteten.

Den genererade Bicep är en startpunkt och påverkas av ändringar i tillhandahållandeinfrastrukturen i C#. Anpassningar till Bicep-filen skrivs över direkt, så gör ändringar via C#-etablerings-API:erna för att säkerställa att de återspeglas i de genererade filerna.

Anpassa infrastruktur för provisionering

Alla AspireAzure resurser är underklasser av den AzureProvisioningResource typen. Den här typen möjliggör anpassning av den genererade Bicep genom att tillhandahålla ett flytande API för konfigurering av Azure-resurser med hjälp av ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>)-APIet. Du kan till exempel konfigurera App Service Plan SKU, plats med mera. I följande exempel visas hur du anpassar Azure App Service-miljön:

var builder = DistributedApplication.CreateBuilder(args);

var appServiceEnv = builder.AddAzureAppServiceEnvironment("app-service-env")
                           .ConfigureInfrastructure(infra =>
                           {
                               var resources = infra.GetProvisionableResources();
                               var plan = resources.OfType<AppServicePlan>().Single();
                               
                               plan.Sku = new AppServiceSkuDescription
                               {
                                   Name = "P1V3",
                                   Tier = "Premium"
                               };
                               
                               plan.Tags.Add("Environment", "Production");
                               plan.Tags.Add("CostCenter", "Engineering");
                           });

builder.Build().Run();

Föregående kod:

Det finns många fler konfigurationsalternativ för att anpassa App Service-miljön. Mer information finns i Azure.Provisioning.AppService och Azure. Anpassning av provisionering.

Se även