Por Carlos Adriano de Souza
05/09/2023
Hoje iremos falar sobre migração de aplicações.Net de um servidor IIS Windows para Elastic Beanstalk, usando o assistente WWAMA, fornecido pela AWS.
Exemplo da página a ser migrada para AWS Elastic Beanstalk:
Visão geral WWAMA:
O Windows Web Application Migration Assistant (WWAMA) para AWS Elastic Beanstalk é um utilitário PowerShell que migra aplicações ASP.NET e ASP.NET Core de servidores IIS Windows para Elastic Beanstalk. O assistente de migração pode migrar um site inteiro e sua configuração para o Elastic Beanstalk com o mínimo ou nenhuma alteração no aplicativo. Depois que o assistente migra o aplicativo, o Elastic Beanstalk lida automaticamente com os detalhes contínuos de provisionamento de capacidade, balanceamento de carga, dimensionamento automático, monitoramento da integridade do aplicativo e aplicação de patches e atualizações.
Pré-requisitos WWAMA:
- IIS 8.0 ou superior | Windows Server 2012 ou superior;
- MS PowerShell version 3.0 ou superior;
- Microsoft Web Deploy version 3.6 ou superior;
- Modulo AWSPowerShell;
- NET Framework 4.x, 2.0, 1.x ou .NET Core 3.0.0, 2.2.8, 2.1.14;
- Módulo WebAdministration for MS PowerShell. Você pode chegar essa dependência ao executar o comando “Import-Module WebAdministration”;
- O servidor precisa ter acesso full a Internet para AWS.
O que é o Elastic Beanstalk?
O Elastic Beanstalk facilita ainda mais para os desenvolvedores implementarem e gerenciarem com rapidez aplicativos na Nuvem AWS. Os desenvolvedores simplesmente carregam seus aplicativos e o Elastic Beanstalk administra automaticamente os detalhes de implantação do provisionamento da capacidade, do balanceamento de carga, do Auto Scaling e do monitoramento da integridade do aplicativo.
Por que o AWS Elastic Beanstalk?
O Elastic Beanstalk é um serviço para implementar e escalar aplicações e serviços da Web. Envie seu código e o Elastic Beanstalk gerencia automaticamente à implantação, desde o provisionamento de capacidade, balanceamento de carga e escalabilidade automática até o monitoramento da integridade de aplicações.
Limitações:
- Caso tenha alguma dependência de software no servidor de origem, o WWAMA não detecta e não migra.
- Pode haver no máximo uma porta HTTP e no máximo uma porta HTTPS vinculada ao site. Quando o site é migrado para o Elastic Beanstalk, as portas são vinculadas às portas 80 e 443, respectivamente.
- Para migrar os certificados SSL existentes, exporte-os manualmente do servidor IIS, importe-os para o AWS Certificate Manager (ACM) e configure-os para o load balancer do Elastic Beanstalk. Para maiores informações: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https.html
Procedimento de migração
1. Criar um usuario do IAM
a. Crie o usuário como Programmatic Access e armazene as credenciais AccessKey e SecretKey que serão usadas posteriormente;
b. Anexe as politicas IAMReadOnlyAccess, AdministratorAccess-AWSElasticBeanstalk e AmazonS3FullAccess, conforme abaixo:
2. Configurar as credenciais para acesso a AWS
Para usar o Elastick Beanstalk precisamos configurar as credenciais de acesso a AWS, no terminal do powershell como administrador digite o seguinte comando para configurar as credenciais da AWS:
Set-AWSCredential -AccessKey AccessNewUser -SecretKey SecretNewUser -StoreAs default;
As informações de AccessKey e SecretKey estão no arquivo .CSV gerado durante a criação do usuario no IAM no passo 1.
Para maiores informações referente CLI AWSPowerShell: https://aws.amazon.com/pt/powershell/
3. Clonar repositório do WWAMA no Gitgub
A ferramenta WWAMA encontra-se no repositório https://github.com/awslabs/windows-web-app-migration-assistant.git, ela deve ser baixada/clonada e armazenada em um diretório local no servidor onde encontra-se a aplicacao .NET, após isso descompacte-a.
4. A ferramenta WWAMA tem um assistente de migração conforme abaixo:
a. Descobre sites locais.
b. Seleciona site para migrar.
c. Descobre strings de conexao com banco de dados.
d. Atualiza strings de conexao com banco de dados.
e. Gera pacote para ser publicado no Elastic Beanstalk.
f. Publica aplicacao no Elastic Beanstalk
5. Executando o assistente WWAMA
Navegue até o diretório onde foi descompactado a ferramenta WWAMA (conforme o passo 3), para iniciar o assistente dentro do diretório digite o seguinte comando .\MigrateIISWebsiteToElasticBeanstalk.ps1
6. O assistente solicita informações de localização das credenciais, como não foi definido, pressione ENTER.
7. Nesta tela insira o nome do perfil que foi configurado com o comando Set-AWSCredential no passo 2, no nosso caso foi definido como “default”, pressione ENTER.
8. Insira a região em que deseja que o Elastic Beanstalk seja executado, iremos manter a opção padrão (us-east-1) e pressione ENTER.
9. O assistente lista os sites identificados, no nosso caso iremos selecionar a opcao 3(Sitedarede), pressione ENTER.
10. A seguir o assistente solicita que seja alterado quaisquer strings existentes, como não há strings existentes, pressione ENTER.
11. Em seguida defina um nome para sua aplicação no Elastic Beanstalk, no nosso caso iremos definir como "sitedarede”, pressione ENTER.
12. A seguir, selecionar a plataforma desejada, a plataforma deverá corresponder ao servidor de origem, no nosso caso selecionaremos "Windows Server 2019" na opção 6, pressione ENTER.
13. No tipo de Instância, selecione a opção desejada, no nosso caso selecionaremos a opção t2.micro, pressione ENTER.
14. Nesta tela o tipo de ambiente, iremos selecionar a opção 1 (SingleInstance), pressione ENTER.
15. Após isso o assistente migrara sua aplicação para o Elastic Beanstalk. Aguarde alguns minutos.
16. Quando a migração concluir, será mostrado uma tela conforme abaixo.
17. Logar no console AWS e selecionar Elastic Beanstalk, na tela do Beanstalk clicar no ambiente que foi criado recentemente, no nosso caso "sitedarede-env".
18. Na próxima tela clicar em "Versões de aplicativo".
19. A seguir, selecionar o bundle recém-criado e no menu Ações clicar em "Implantar".
20. Selecionar o ambiente criado(sitedarede-env) e depois em Implantar.
21. Neste momento deverá aguardar o processo de deploy do bundle.
22. Quando o processo for concluído, Aparecerá uma mensagem semelhante a mensagem abaixo. Para acessar o site basta clicar no endereço conforme abaixo.
23. Pronto, site acessível via Elastic Beanstalk.
Conclusão
A vantagem do Elastic Beanstalk é que ele proporciona implantar aplicações WEB na nuvem AWS de uma maneira rápida, fácil e gerenciada com alta disponibilidade, balanceamento de carga, escalabilidade e redundância, tudo isso em apenas alguns minutos. Podemos considerar que o Elastic Beanstalk é o início da jornada de modernização para um ambiente Cloud. Uma outra vantagem é que a migração para o Elastic Beanstalk abstrai toda as configurações necessárias para criar um ambiente dentro da AWS que envolve a criação de recursos tais como instancias EC2, VPCs, armazenamentos, monitoramento e segurança do ambiente.
carlos.souza@darede.com.br
Profissional certificado com mais de 12 anos de experiência atuando com administração de servidores Windows 2003/2008/2012/2016/2019, desde a implantação a sustentacao do ambiente.