Implantar uma aplicação Web no Amazon EC2

GUIA DE CONCEITOS BÁSICOS

Módulo 2: Automatizar a configuração

Neste módulo, você aprenderá a usar dados de usuários para configurar uma instância do EC2 e instalar pacotes de software nela

Introdução

Ao executar uma instância no Amazon EC2, você tem a opção de transmitir dados de usuários para ela e usá-los para realizar tarefas comuns de configuração automatizada e até mesmo executar scripts após a execução da instância. Use esse recurso para simplificar a implantação da aplicação especificando o software que será instalado e configurado na primeira execução e copie a aplicação de exemplo para a instância. Este módulo mostra como criar e adicionar dados de usuários à instância do EC2 criada no módulo anterior.

O que você aprenderá

  • Adicionar dados de usuários à instância do EC2
  • Criar os dados de usuários para instalar e configurar todos os pacotes necessários no sistema operacional
  • Implantar a aplicação Web copiando-a para a instância

 Tempo para a conclusão

5 minutos

 Pré-requisitos do módulo

  • Conta da AWS com acesso em nível de administrador**
  • Navegador recomendado: versão mais recente do Chrome ou Firefox

[**]É possível que as contas criadas nas últimas 24 horas ainda não tenham acesso aos serviços necessários para este tutorial.

Implementação

Adicionar dados de usuários à instância do EC2

A aplicação Web de exemplo encontrada na pasta SampleApp  é uma aplicação Python que será implantada. Ela precisa do Nginx e do uWSGI para ser executada. Para instalar os componentes, é preciso seguir uma série de etapas. Primeiro, instale todos os pacotes do sistema operacional, configure o nginx e o uwsgi, verifique se eles estão em execução e copie a aplicação de exemplo para a instância. Consulte o arquivo de script que mostra todas as etapas de configuração: SampleApp/configure_amz_linux_sample_app.sh. Confira as etapas para saber mais sobre a configuração da instância.

Para implantar a aplicação Web, adicione um código ao CDK para copiar os arquivos e scripts de configuração e a aplicação de exemplo ao S3. Ajuste os scripts de configuração. Para fazer isso, adicione o seguinte código em ec2-cdk-stack.ts abaixo do código anterior:

// Use an asset to allow uploading files to S3, and then download it to the EC2 instance as part of the user data

    // --- Sample App ---
    // Upload the sample app  to S3
    const sampleAppAsset = new s3assets.Asset(this, "SampleAppAsset", {
      path: path.join(__dirname, "../../SampleApp"),
    });

    // Allow EC2 instance to read the file
    sampleAppAsset.grantRead(role);

    // Download the file from S3, and store the full location and filename as a variable
    const sampleAppFilePath = ec2Instance.userData.addS3DownloadCommand({
      bucket: sampleAppAsset.bucket,
      bucketKey: sampleAppAsset.s3ObjectKey,
    });

    // --- Sample App ---

    // --- Configuration Script ---
    // Upload the configuration file to S3
    const configScriptAsset = new s3assets.Asset(this, "ConfigScriptAsset", {
      path: path.join(__dirname, "../../SampleApp/configure_amz_linux_sample_app.sh"),
    });

    // Allow EC2 instance to read the file
    configScriptAsset.grantRead(ec2Instance.role);

    // Download the file from S3, and store the full location and filename as a variable
    const configScriptFilePath = ec2Instance.userData.addS3DownloadCommand({
      bucket: configScriptAsset.bucket,
      bucketKey: configScriptAsset.s3ObjectKey,
    });

    // Add a line to the user data to executy the downloaded file
    ec2Instance.userData.addExecuteFileCommand({
      filePath: configScriptFilePath,
      arguments: sampleAppFilePath,
    });

    // --- Configuration Script ---

Todas as etapas serão adicionadas ao script de dados de usuários da instância e realizadas quando você executá-la. Antes de implantar tudo, siga mais uma etapa: adicione a saída da pilha do CDK para facilitar a conexão SSH à instância. Na infraestrutura acima, você criou uma chave SSH, que é armazenada no AWS Secrets Manager. Para baixá-la para a estação de trabalho, é preciso recuperá-la. Você também precisará do IP público da instância e do comando SSH a ser executado. 

Adicione o seguinte código à pilha na parte inferior:

// Create outputs for connecting

    // Output the public IP address of the EC2 instance
    new cdk.CfnOutput(this, "IP Address", {
      value: ec2Instance.instancePublicIp,
    });

    // Command to download the SSH key
    new cdk.CfnOutput(this, "Download Key Command", {
      value:
        "aws secretsmanager get-secret-value --secret-id ec2-ssh-key/cdk-keypair/private --query SecretString --output text > cdk-key.pem && chmod 400 cdk-key.pem",
    });

    // Command to access the EC2 instance using SSH
    new cdk.CfnOutput(this, "ssh command", {
      value:
        "ssh -i cdk-key.pem -o IdentitiesOnly=yes ec2-user@" +
        ec2Instance.instancePublicIp,
    });

As três saídas exibirão o seguinte:

  • Como baixar a chave SSH para acessar a instância
  • O IP público da instância
  • Um comando SSH para acessar a instância.

Agora você já pode implantar a pilha.

Conclusão

Neste módulo, você aprendeu a adicionar dados de usuários a uma instância do EC2 para configurá-la ao executá-la pela primeira vez. Você os usou para instalar todas as dependências, configurar o nginx e o uwsgi e implantar a aplicação de exemplo. No próximo módulo, você implantará a pilha e a aplicação de exemplo.

A seguir: Implantar a pilha do CDK

Envie seus comentários.

Agradecemos por seus comentários
Ficamos satisfeitos por esta página ter ajudado você. Deseja compartilhar detalhes adicionais para nos ajudar a continuar melhorando?
Fechar
Agradecemos por seus comentários
Lamentamos que esta página não tenha ajudado você. Deseja compartilhar detalhes adicionais para nos ajudar a continuar melhorando?
Fechar