Post

AWS series VII: Elastic Beanstalk (EB)

AWS series VII: Elastic Beanstalk (EB)

Serie de artigos sobre Amazon Web Services.

GitHub watchers GitHub stars GitHub forks

Em este lab sobre Elastic Beanstalk (EB) aprenderemos alguns conceitos importantes da camada de plataforma da AWS:

  • Deploy de aplicações
  • Plataformas/entornos de execução disponíveis
  • Logging
  • Monitoramento

Pre-reqs

  • git
  • python3
  • pip3

Se não tiver os pre-reqs na máquina local pular para o deploy em uma VM no EC2.

Deploy local

  1. Clonar o repositório:
    1
    
    $ git clone https://github.com/josecastillolema/fiap
    
  2. Navegar ate o diretorio fiap/scj/cloud/lab06-paas-eb. O diretorio contem os seguintes arquivos:

    • application.py: Um serviço web escrito em Python que usa a biblioteca Flask.
    • requirements.txt: As dependências da aplicação. Podem ser instaladas usando pip, o gestor de dependências do Python.
  3. Instalar as dependências:
    1
    
    $ pip3 install -r requirements.txt
    
  4. Executar a aplicacao:
    1
    2
    3
    4
    5
    6
    7
    
    $ python3 application.py
     Serving Flask app "application" (lazy loading)
     Environment: production
       WARNING: Do not use the development server in a production environment.
       Use a production WSGI server instead.
     Debug mode: off
     Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    
  5. Testar o acesso local:

Deploy em uma VM no EC2

Se tiver feito o deploy local pode pular esta seção.

  1. Criar uma VM com a imagem Amazon Linux

  2. Logar na VM

  3. Atualizar os repositorios:
    1
    
     $ sudo yum update
    
  4. Instalar o pip3 (gestor de pacotes do python3):
    1
    
     $ sudo yum install -y python3-pip git
    
  5. Clonar o repositório:
    1
    
     $ git clone https://github.com/josecastillolema/fiap
    
  6. Navegar ate o diretorio fiap/shift/multicloud/lab06-paas-eb. O diretorio contem os seguintes arquivos:
    • application.py: Um serviço web escrito em Python que usa a biblioteca Flask.
    • requirements.txt: As dependências da aplicação. Podem ser instaladas usando pip, o gestor de dependências do Python.
  7. Instalar as dependências:
    1
    
     $ sudo pip3 install -r requirements.txt --use-feature=2020-resolver
    
  8. Executar a aplicação:
    1
    2
    3
    4
    5
    6
    7
    
     $ python3 application.py
      Serving Flask app "application" (lazy loading)
      Environment: production
        WARNING: Do not use the development server in a production environment.
        Use a production WSGI server instead.
      Debug mode: off
      Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    
  9. Em uma nova terminal testar o acesso local:
    1
    2
    
     $ curl localhost:5000
     <h1>Hola FIAP!</h1>
    
  10. Testar o acesso remoto pela IP pública da VM (lembrando que é necessária a liberacão da porta 5000 no security group da VM):

Deploy na AWS

  1. Acessar o serviço Elastic Beanstalk:

  2. Criar um novo environment:

  3. A aplicação é um serviço web:

  4. Configurar o nome da apliação:

  5. Escolher o entorno de execução:

  6. Fazer o upload da aplicação. O arquivo comprimido deve conter os seguintes arquivos:
    • application.py: Um serviço web escrito em Python que usa a biblioteca Flask.
    • requirements.txt: As dependências da aplicação. Podem ser instaladas usando pip, o gestor de dependências do Python.

  7. Os próximos passos relativos a segurança são específicos das contas AWS Academy

    a. Antes de criar a aplicaçao, mostrar as opções avançadas:

    b. Editar as opções de segurança:

    c. Fazer os seguintes ajustes:

    • Service role: LabRole
    • EC2 key pair: vockey
    • IAM instance profile: LabInstanceProfile
  8. Após uns minutos, conferir o estado da aplicação:

  9. Accessar a URL da aplicação:

Logging e monitoramento

  1. Se for necessário fazer troubleshooting da aplicação, fazer download dos logs:

  2. Para monitorar a aplicação:

GitHub followers

This post is licensed under CC BY 4.0 by the author.