As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tutorial: Implantação de um aplicativo ASP.NET Core com o Elastic Beanstalk
Neste tutorial, você percorrerá o processo de criação de um novo aplicativo ASP.NET Core e sua implantação no. AWS Elastic Beanstalk
Primeiramente, você usará a ferramenta de linha de comando dotnet
do .NET Core SDK para gerar um aplicativo de linha de comando do .NET Core básico, instalar dependências, compilar código e executar aplicativos localmente. Em seguida, você modificará a classe Program.cs
padrão e adicionará uma classe Startup.cs
do ASP.NET e arquivos de configuração para criar um aplicativo que atenda às solicitações HTTP com ASP.NET e IIS.
Por fim, o Elastic Beanstalk usará um manifesto de implantação para configurar as implantações de aplicações .NET Core, aplicações personalizadas e várias aplicações .NET Core ou MSBuild em um único servidor. Para implantar um aplicativo .NET Core em um ambiente Windows Server, adicione um arquivo do site a um pacote de origem do aplicativo com um manifesto de implantação. O comando dotnet publish
gera classes e dependências compiladas que você pode combinar a um arquivo web.config
para criar o arquivo do site. O manifesto de implantação informa para o Elastic Beanstalk o caminho em que o site deve ser executado e pode ser usado para configurar grupos de aplicações e executar várias aplicações em caminhos diferentes.
O código-fonte está disponível aqui: dotnet-core-windows-tutorial.zip
Seções
Pré-requisitos
Este tutorial usa o .NET Core SDK para gerar um aplicativo .NET Core básico, executá-lo localmente e criar um pacote implantável.
Requisitos
-
.NET Core (x64) 1.0.1, 2.0.0 ou mais recente
Como instalar o .NET Core SDK
-
Faça download do instalador em microsoft.com/net/core
. Selecione Windows. Escolha Baixar o .NET SDK. -
Execute o instalador e siga as instruções.
Este tutorial usa um utilitário ZIP de linha de comando para criar um pacote de origem que você pode implantar no Elastic Beanstalk. Para usar o comando zip
no Windows, você pode instalar o UnxUtils
, uma coleção simples de utilitários de linha de comando úteis, como zip
e ls
. Se preferir, você pode usar o Windows Explorer ou qualquer outro utilitário ZIP para criar arquivos de pacote de origem.
Para instalar UnxUtils
-
Baixar
UnxUtils
. -
Extraia o arquivo em um diretório local. Por exemplo,
C:\Program Files (x86)
. -
Adicione o caminho aos binários para sua variável de usuário PATH do Windows. Por exemplo,
C:\Program Files (x86)\UnxUtils\usr\local\wbin
.-
Pressione a tecla Windows e insira
environment variables
. -
Escolha Edit environment variables for your account.
-
Selecione PATH e, em seguida, Edit (Editar).
-
Adicione caminhos ao campo Variable value, separados por ponto e vírgula. Por exemplo:
C:\item1\path
;
C:\item2\path
-
Selecione OK duas vezes para aplicar as novas configurações.
-
Feche todas as janelas do prompt de comando em execução e abra novamente uma janela do prompt de comando.
-
-
Abra uma nova janela de solicitação de comando e execute o comando
zip
para verificar se ele funciona.>
zip -h
Copyright (C) 1990-1999 Info-ZIP Type 'zip "-L"' for software license. ...
Gerar um projeto .NET Core
Use a ferramenta de linha de comando dotnet
para gerar um novo projeto .NET Core em C# e executá-lo localmente. O aplicativo .NET Core padrão é um utilitário de linha de comando que imprime Hello World!
e depois é encerrado.
Como gerar um novo projeto .NET Core
-
Abra uma nova janela de prompt de comando e navegue até a pasta do usuário.
>
cd %USERPROFILE%
-
Use o comando
dotnet new
para gerar um novo projeto .NET Core.C:\Users\username>
dotnet new console -o dotnet-core-tutorial
Content generation time: 65.0152 ms The template "Console Application" created successfully. C:\Users\username>cd dotnet-core-tutorial
-
Use o comando
dotnet restore
para instalar dependências.C:\Users\username\dotnet-core-tutorial>
dotnet restore
Restoring packages for C:\Users\username\dotnet-core-tutorial\dotnet-core-tutorial.csproj... Generating MSBuild file C:\Users\username\dotnet-core-tutorial\obj\dotnet-core-tutorial.csproj.nuget.g.props. Generating MSBuild file C:\Users\username\dotnet-core-tutorial\obj\dotnet-core-tutorial.csproj.nuget.g.targets. Writing lock file to disk. Path: C:\Users\username\dotnet-core-tutorial\obj\project.assets.json Restore completed in 1.25 sec for C:\Users\username\dotnet-core-tutorial\dotnet-core-tutorial.csproj. NuGet Config files used: C:\Users\username\AppData\Roaming\NuGet\NuGet.Config C:\Program Files (x86)\NuGet\Config\Microsoft.VisualStudio.Offline.config Feeds used: https://api.nuget.org/v3/index.json C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\ -
Use o comando
dotnet run
para criar e executar o aplicativo localmente.C:\Users\username\dotnet-core-tutorial>
dotnet run
Hello World!
Iniciar um ambiente do Elastic Beanstalk
Use o console do Elastic Beanstalk para iniciar um ambiente do Elastic Beanstalk. Para este exemplo, você o iniciará com uma plataforma .NET. Após iniciar e configurar seu ambiente, você poderá implantar um novo código-fonte a qualquer momento.
Para iniciar um ambiente (console)
-
Em Platform (Plataforma), selecione a plataforma e a ramificação da plataforma que correspondem à linguagem usada pelo seu aplicativo.
-
Para Application code, escolha Sample application.
-
Selecione Review and launch.
-
Examine as opções disponíveis. Escolha a opção disponível que deseja usar e, quando estiver pronto, escolha Create app (Criar aplicativo).
A criação do ambiente leva cerca de 10 minutos. Durante esse período, você pode atualizar seu código-fonte.
Atualizar o código-fonte
Modifique o aplicativo padrão para um aplicativo web que usa ASP.NET e IIS.
-
ASP.NET é a framework de site para .NET.
-
O IIS é o servidor Web que executa a aplicação nas instâncias do Amazon EC2 no ambiente do Elastic Beanstalk.
Os exemplos de código-fonte a seguir estão disponíveis aqui: dotnet-core-tutorial-source.zip
nota
O procedimento a seguir mostra como converter o código do projeto em um aplicativo web. Para simplificar o processo, é possível gerar o projeto como um aplicativo web desde o início. Na seção anterior Gerar um projeto .NET Core, modifique o comando da etapa dotnet new
pelo comando a seguir.
C:\Users\username> dotnet new web -o dotnet-core-tutorial -n WindowsSampleApp
Para adicionar suporte para ASP.NET e IIS ao seu código
-
Copie
Program.cs
para o diretório do aplicativo para ser executado como um construtor de host da web.exemplo c:\users\username\dotnet-core-tutorial\ Program.cs
namespace Microsoft.AspNetCore.Hosting; using WindowsSampleApp; public static class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args).UseStartup<Startup>(); }
-
Adicione
Startup.cs
para executar um site ASP.NET.exemplo c:\users\username\dotnet-core-tutorial\ Startup.cs
namespace WindowsSampleApp { public class Startup { public void Configure(IApplicationBuilder app) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", () => "Hello World from Elastic Beanstalk"); }); } } }
-
Adicione
WindowsSampleApp.csproj
, que inclui o middleware IIS e o arquivoweb.config
da saída dedotnet publish
.nota
O exemplo a seguir foi desenvolvido usando o .NET Core Runtime 2.2.1. Pode ser necessário modificar os valores de atributos
TargetFramework
ouVersion
nos elementosPackageReference
para corresponder à versão do .NET Core Runtime que está sendo usado nos projetos personalizados.exemplo c:\users\username\dotnet-core-tutorial\ WindowsSampleApp .csproj
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <RollForward>LatestMajor</RollForward> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> <RootNamespace>WindowsSampleApp</RootNamespace> </PropertyGroup> </Project>
Em seguida, instale as novas dependências e execute o site ASP.NET localmente.
Para executar o site localmente
-
Use o comando
dotnet restore
para instalar dependências. -
Use o comando
dotnet run
para criar e executar o aplicativo localmente. -
Abra localhost:5000
para visualizar o site.
Para executar o aplicativo em um servidor Web, você precisa empacotar o código-fonte compilado com um arquivo de configuração web.config
e dependências de runtime. A ferramenta dotnet
oferece um comando publish
que reúne esses arquivos em um diretório de acordo com a configuração em dotnet-core-tutorial.csproj
.
Para criar seu site
-
Use o comando
dotnet publish
para gerar o código compilado e as dependências em uma pasta denominadasite
.C:\users\username\dotnet-core-tutorial>
dotnet publish -o site
Para implantar a aplicação no Elastic Beanstalk, combine o arquivo do site com um manifesto de implantação. Isso informa o Elastic Beanstalk como executá-lo.
Para criar um pacote de origem
-
Adicione os arquivos na pasta do site a um arquivo ZIP.
nota
Se você usar um utilitário ZIP diferente, certifique-se de adicionar todos os arquivos à pasta raiz do arquivo ZIP resultante. Isso é necessário para uma implantação bem-sucedida da aplicação no ambiente do Elastic Beanstalk.
C:\users\username\dotnet-core-tutorial>
cd site
C:\users\username\dotnet-core-tutorial\site>zip ../site.zip *
adding: dotnet-core-tutorial.deps.json (164 bytes security) (deflated 84%) adding: dotnet-core-tutorial.dll (164 bytes security) (deflated 59%) adding: dotnet-core-tutorial.pdb (164 bytes security) (deflated 28%) adding: dotnet-core-tutorial.runtimeconfig.json (164 bytes security) (deflated 26%) adding: Microsoft.AspNetCore.Authentication.Abstractions.dll (164 bytes security) (deflated 49%) adding: Microsoft.AspNetCore.Authentication.Core.dll (164 bytes security) (deflated 57%) adding: Microsoft.AspNetCore.Connections.Abstractions.dll (164 bytes security) (deflated 51%) adding: Microsoft.AspNetCore.Hosting.Abstractions.dll (164 bytes security) (deflated 49%) adding: Microsoft.AspNetCore.Hosting.dll (164 bytes security) (deflated 60%) adding: Microsoft.AspNetCore.Hosting.Server.Abstractions.dll (164 bytes security) (deflated 44%) adding: Microsoft.AspNetCore.Http.Abstractions.dll (164 bytes security) (deflated 54%) adding: Microsoft.AspNetCore.Http.dll (164 bytes security) (deflated 55%) adding: Microsoft.AspNetCore.Http.Extensions.dll (164 bytes security) (deflated 50%) adding: Microsoft.AspNetCore.Http.Features.dll (164 bytes security) (deflated 50%) adding: Microsoft.AspNetCore.HttpOverrides.dll (164 bytes security) (deflated 49%) adding: Microsoft.AspNetCore.Server.IISIntegration.dll (164 bytes security) (deflated 46%) adding: Microsoft.AspNetCore.Server.Kestrel.Core.dll (164 bytes security) (deflated 63%) adding: Microsoft.AspNetCore.Server.Kestrel.dll (164 bytes security) (deflated 46%) adding: Microsoft.AspNetCore.Server.Kestrel.Https.dll (164 bytes security) (deflated 44%) adding: Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll (164 bytes security) (deflated 56%) adding: Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll (164 bytes security) (deflated 51%) adding: Microsoft.AspNetCore.WebUtilities.dll (164 bytes security) (deflated 55%) adding: Microsoft.Extensions.Configuration.Abstractions.dll (164 bytes security) (deflated 48%) adding: Microsoft.Extensions.Configuration.Binder.dll (164 bytes security) (deflated 47%) adding: Microsoft.Extensions.Configuration.dll (164 bytes security) (deflated 46%) adding: Microsoft.Extensions.Configuration.EnvironmentVariables.dll (164 bytes security) (deflated 46%) adding: Microsoft.Extensions.Configuration.FileExtensions.dll (164 bytes security) (deflated 47%) adding: Microsoft.Extensions.DependencyInjection.Abstractions.dll (164 bytes security) (deflated 54%) adding: Microsoft.Extensions.DependencyInjection.dll (164 bytes security) (deflated 53%) adding: Microsoft.Extensions.FileProviders.Abstractions.dll (164 bytes security) (deflated 46%) adding: Microsoft.Extensions.FileProviders.Physical.dll (164 bytes security) (deflated 47%) adding: Microsoft.Extensions.FileSystemGlobbing.dll (164 bytes security) (deflated 49%) adding: Microsoft.Extensions.Hosting.Abstractions.dll (164 bytes security) (deflated 47%) adding: Microsoft.Extensions.Logging.Abstractions.dll (164 bytes security) (deflated 54%) adding: Microsoft.Extensions.Logging.dll (164 bytes security) (deflated 48%) adding: Microsoft.Extensions.ObjectPool.dll (164 bytes security) (deflated 45%) adding: Microsoft.Extensions.Options.dll (164 bytes security) (deflated 53%) adding: Microsoft.Extensions.Primitives.dll (164 bytes security) (deflated 50%) adding: Microsoft.Net.Http.Headers.dll (164 bytes security) (deflated 53%) adding: System.IO.Pipelines.dll (164 bytes security) (deflated 50%) adding: System.Runtime.CompilerServices.Unsafe.dll (164 bytes security) (deflated 43%) adding: System.Text.Encodings.Web.dll (164 bytes security) (deflated 57%) adding: web.config (164 bytes security) (deflated 39%) C:\users\username\dotnet-core-tutorial\site>cd ../
-
Adicione um manifesto de implantação que aponta para o arquivo do site.
exemplo c:\users\username\dotnet-core-tutorial\ aws-windows-deployment-manifest .json
{ "manifestVersion": 1, "deployments": { "aspNetCoreWeb": [ { "name": "test-dotnet-core", "parameters": {
"appBundle": "site.zip",
"iisPath": "/", "iisWebSite": "Default Web Site" } } ] } } -
Use o comando
zip
para criar um pacote de origem denominadodotnet-core-tutorial.zip
.C:\users\username\dotnet-core-tutorial>
zip dotnet-core-tutorial.zip site.zip aws-windows-deployment-manifest.json
adding: site.zip (164 bytes security) (stored 0%) adding: aws-windows-deployment-manifest.json (164 bytes security) (deflated 50%)
Implantar o aplicativo
Implante o pacote de origem no ambiente do Elastic Beanstalk criado por você.
Você pode baixar o pacote de origem aqui: .zip dotnet-core-tutorial-bundle
Para implantar um pacote de origem
Abra o console do Elastic
Beanstalk e, na lista Regiões, selecione sua. Região da AWS -
No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.
nota
Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.
-
Na página de visão geral do ambiente, escolha Upload and deploy (Fazer upload e implantar).
-
Use a caixa de diálogo na tela para carregar o pacote de origem.
-
Escolha Deploy (Implantar).
-
Quando a implantação for concluída, é possível escolher o URL do site para abri-lo em uma nova guia.
O aplicativo simplesmente grava Hello from ASP.NET Core!
na resposta e é retornado.
Ao iniciar um ambiente, os seguintes recursos são criados:
-
Instância do EC2: uma máquina virtual do Amazon Elastic Compute Cloud (Amazon EC2) configurada para executar aplicações Web na plataforma escolhida.
Cada plataforma executa um conjunto específico de software, arquivos de configuração e scripts para oferecer suporte a uma versão de linguagem, framework, contêiner da web específicos ou a uma combinação deles. A maioria das plataformas usa o Apache ou o NGINX como um proxy reverso que fica na frente da aplicação Web, encaminha solicitações para ela, atende ativos estáticos e gera logs de acesso e de erro.
-
Grupo de segurança de instância: um grupo de segurança do Amazon EC2 configurado para permitir tráfego de entrada na porta 80. Esse recurso permite que o tráfego HTTP do load balancer chegue à instância do EC2 que executa seu aplicativo Web. Por padrão, o tráfego não é permitido em outras portas.
-
Balanceador de carga: um balanceador de carga do Elastic Load Balancing configurado para distribuir solicitações para as instâncias que executam a aplicação. Um load balancer também elimina a necessidade de expor suas instâncias diretamente à Internet.
-
Grupo de segurança do balanceador de carga: um grupo de segurança do Amazon EC2 configurado para permitir tráfego de entrada na porta 80. Esse recurso permite que o tráfego HTTP da Internet acesse o load balancer. Por padrão, o tráfego não é permitido em outras portas.
-
Grupo de Auto Scaling: grupo de Auto Scaling configurado para substituir uma instância se ela for encerrada ou ficar indisponível.
-
Bucket do Amazon S3: um local de armazenamento do seu código-fonte, logs e outros artefatos criados quando o Elastic Beanstalk é utilizado.
-
CloudWatch Alarmes da Amazon — Dois CloudWatch alarmes que monitoram a carga nas instâncias em seu ambiente e que são acionados se a carga for muito alta ou muito baixa. Quando um alarme é acionado, o seu grupo de Auto Scaling pode aumentar ou diminuir.
-
AWS CloudFormation stack — O Elastic AWS CloudFormation Beanstalk usa para lançar os recursos em seu ambiente e propagar as alterações de configuração. Os recursos são definidos em um modelo que você pode visualizar no console doAWS CloudFormation
. -
Nome de domínio: um nome de domínio que encaminha para a aplicação Web no formato
subdomínio
.região
.elasticbeanstalk.com.nota
Para aumentar a segurança de suas aplicações do Elastic Beanstalk, o domínio elasticbeanstalk.com é registrado na Lista Pública de Sufixos (PSL)
. Para maior segurança, recomendamos que você use cookies com um prefixo __Host-
se precisar definir cookies confidenciais no nome de domínio padrão para suas aplicações do Elastic Beanstalk. Essa prática ajudará a defender seu domínio contra tentativas de falsificação de solicitação entre sites (CSRF). Para obter mais informações, consulte a página Set-Cookiena Mozilla Developer Network.
Todos esses recursos são gerenciados pelo Elastic Beanstalk. Quando você encerra o ambiente, o Elastic Beanstalk encerra todos os recursos dele.
nota
O bucket do Amazon S3 que o Elastic Beanstalk cria é compartilhado entre ambientes e não é excluído durante o encerramento do ambiente. Para obter mais informações, consulte Usar o Elastic Beanstalk com o Amazon S3.
Limpeza
Ao terminar de trabalhar com o Elastic Beanstalk, você pode encerrar o ambiente. O Elastic Beanstalk AWS encerra todos os recursos associados ao seu ambiente, como instâncias do Amazon EC2, instâncias de banco de dados, balanceadoresde carga, grupos de segurança e alarmes.
Como encerrar o ambiente do Elastic Beanstalk
Abra o console do Elastic
Beanstalk e, na lista Regiões, selecione sua. Região da AWS -
No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.
nota
Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.
-
Escolha Actions (Ações) e depois Terminate Environment (Encerrar ambiente).
-
Use a caixa de diálogo na tela para confirmar o encerramento do ambiente.
Com o Elastic Beanstalk, é possível criar facilmente um ambiente para a aplicação a qualquer momento.
Próximas etapas
À medida que você desenvolva a aplicação, provavelmente vai precisar gerenciar ambientes e implantá-la sem criar manualmente um arquivo .zip e carregá-la no console do Elastic Beanstalk. A interface de linha de comando do Elastic Beanstalk (EB CLI easy-to-use ) fornece comandos para criar, configurar e implantar aplicativos nos ambientes do Elastic Beanstalk a partir da linha de comando.
Se você usa o Visual Studio para desenvolver seu aplicativo, você também pode usar o AWS Toolkit for Visual Studio para implantar alterações, gerenciar seus ambientes do Elastic Beanstalk e gerenciar outros recursos. AWS Consulte A AWS Toolkit for Visual Studio para obter mais informações.
Para desenvolvimento e teste, convém usar a funcionalidade do Elastic Beanstalk para adicionar uma instância de banco de dados gerenciada diretamente ao seu ambiente. Para obter instruções sobre como configurar um banco de dados no ambiente, consulte Adição de um banco de dados ao seu ambiente do Elastic Beanstalk.
Por fim, se você planeja usar seu aplicativo em um ambiente de produção, configure um nome de domínio personalizado para o seu ambiente e habilite HTTPS para conexões seguras.