Projetos na AWS

Crie um aplicativo web moderno

Implante um aplicativo web, estabeleça uma conexão a um banco de dados e analise o comportamento dos usuários

Módulo 3: Armazenar informações dos mysfits

Neste módulo, você configurará o Amazon DynamoDB para armazenar informações dos mysfits em uma tabela de banco de dados central.

Visão geral

Agora que você implantou um serviço e um pipeline de Continuous Integration/Continuous Delivery (CI/CD – Integração contínua/entrega contínua) para entregar alterações ao serviço automaticamente quando o repositório do código for atualizado, poderá disponibilizar rapidamente novos recursos do aplicativo para os clientes do Mythical Mysfits. Com essa agilidade maior, vamos adicionar outra peça fundamental à funcionalidade da arquitetura do site Mythical Mysfits: uma camada de dados.

Neste módulo, você criará uma tabela no Amazon DynamoDB, um serviço de banco de dados NoSQL gerenciado e escalável na AWS de performance extremamente alta. Em vez de ter todo o site Mysfits armazenado em um arquivo JSON estático, vamos utilizar um banco de dados para tornar o site mais escalável e ampliável.

Diagrama da arquitetura

diagrama de arquitetura do fargate e do dynamodb

 Tempo para a conclusão

20 minutos

 Serviços usados

Instruções de implementação

  • A: Crie uma tabela do DynamoDB

    Para adicionar uma tabela do DynamoDB à arquitetura, incluímos outro arquivo de entrada JSON CLI que define uma tabela chamada de MysfitsTable. Essa tabela terá um índice primário definido por um atributo de chave hash chamado de MysfitId e dois índices secundários adicionais. O primeiro índice secundário terá a chave hash Species e uma faixa de chave de MysfitId. O segundo índice secundário terá a chave hash Alignment e uma faixa de chave de MysfitId.

    Os dois índices secundários permitirão executar consultas à tabela para recuperar todos os mysfits que correspondem a uma determinada chave Species ou Alignment e habilitar a funcionalidade de filtro que, como você deve ter notado, ainda não está funcionando no site. Este arquivo pode ser encontrado em ~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json. Nenhuma alteração é necessária nesse arquivo, que está pronto para ser executado. Para saber mais sobre índices no DynamoDB e outros conceitos básicos, visite esta página

    Para criar a tabela usando a AWS CLI, execute o seguinte comando no terminal do Cloud9:

    aws dynamodb create-table --cli-input-json file://~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json

    Depois que o comando for executado, você poderá visualizar os detalhes da tabela recém-criada executando o seguinte comando da AWS CLI no terminal:

    aws dynamodb describe-table --table-name MysfitsTable

    Se você executar o comando a seguir para recuperar todos os itens armazenados na tabela, verá que ela está vazia:

    aws dynamodb scan --table-name MysfitsTable
    {
        "Count": 0,
        "Items": [],
        "ScannedCount": 0,
        "ConsumedCapacity": null
    }
    B: Adicionar itens à tabela do DynamoDB

    O arquivo JSON fornecido pode ser usado para inserir, por processo em lote, alguns itens de mysfits nessa tabela. Isso é feito usando a API BatchWriteItem do DynamoDB.

    Para chamar essa API usando o arquivo JSON fornecido, execute o seguinte comando no terminal (a resposta do serviço deve relatar que não há itens não processados):

    aws dynamodb batch-write-item --request-items file://~/environment/aws-modern-application-workshop/module-3/aws-cli/populate-dynamodb.json

    Se você executar o mesmo comando para varrer todo o conteúdo da tabela, encontrará os itens que foram carregados nela:

    aws dynamodb scan --table-name MysfitsTable
  • A: Copie o código do serviço Flask atualizado

    Agora que os dados foram inseridos na tabela, vamos modificar o código do aplicativo para ler a tabela em vez de retornar o arquivo JSON estático usado no Módulo 2. Incluímos um novo conjunto de arquivos Python no microsserviço Flask. Agora, em vez de ler o arquivo JSON estático, será feita uma solicitação ao DynamoDB.

    A solicitação é formada usando o AWS SDK para Python (boto3). Esse SDK é uma maneira simples, mas poderosa, de interagir com os serviços da AWS usando código Python. Ele permite usar funções e definições do cliente de serviço que são bastante semelhantes às APIs e aos comandos da CLI da AWS que você já executou em outros módulos deste workshop. É fácil traduzir esse comandos para o código Python usando o boto3.

    Para copiar os novos arquivos no diretório do repositório do CodeCommit, execute o seguinte comando no terminal:

    cp ~/environment/aws-modern-application-workshop/module-3/app/service/* ~/environment/MythicalMysfitsService-Repository/service/
    B: Copie o código do serviço Flask atualizado

    Agora precisamos enviar essas alterações de código ao CodeCommit usando o cliente de linha de comando do Git.

    Execute os seguintes comandos para enviar as novas alterações de código e ativar o pipeline de CI/CD:

    cd ~/environment/MythicalMysfitsService-Repository
    git add .
    git commit -m "Add new integration to DynamoDB."
    git push

    Em apenas 5 a 10 minutos, você verá as alterações de código passarem por todo o pipeline de CI/CD em CodePipeline e chegarem ao serviço Flask implantado até o AWS Fargate no Amazon ECS.

    Se quiser, explore o console do AWS CodePipeline para acompanhar o andamento das alterações no pipeline.

  • Por último, precisamos publicar uma nova página index.html no bucket do S3 para que a nova funcionalidade de API usando strings de consulta para filtrar respostas seja utilizada. O novo arquivo index.html pode ser encontrado em ~/environment/aws-modern-application-workshop/module-3/web/index.html.

    Abra esse arquivo no IDE do Cloud9 e substitua a string indicando “REPLACE_ME”, da mesma forma como fez no Módulo 2, pelo endpoint do NLB apropriado. Lembre-se de não incluir o caminho /mysfits.

    Se precisar, consulte o arquivo que você editou no diretório /module-2/ . Depois de substituir o endpoint para apontar para seu NLB, execute o comando a seguir para fazer upload do novo arquivo index.html usando o nome do bucket que você criou no Módulo 1:

    aws s3 cp --recursive ~/environment/aws-modern-application-workshop/module-3/web/ s3://your_bucket_name_here/

    Acesse novamente o site Mythical Mysfits para ver a nova população de mysfits sendo carregada da tabela do DynamoDB e confirmar que o filtro está funcionando!

    Isso conclui o módulo 3.

A próxima etapa é configurar o registro de usuários.