Etapa 3: implantar em produção usando o serviço DynamoDB - Amazon DynamoDB

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á.

Etapa 3: implantar em produção usando o serviço DynamoDB

Em seções anteriores, você implantou e testou a aplicação Jogo da velha localmente no seu computador usando o DynamoDB local. Agora, você implanta o aplicativo em produção da seguinte forma:

  • Implante o aplicativo usando o AWS Elastic Beanstalk, um serviço fácil de usar para implantação e escalabilidade de aplicativos web e web services. Para obter mais informações, consulte Implantar uma aplicação Flask no AWS Elastic Beanstalk.

    O Elastic Beanstalk inicia uma ou mais instâncias do Amazon Elastic Compute Cloud (Amazon EC2), as quais você configura por meio do Elastic Beanstalk, nas quais sua aplicação Jogo da velha será executada.

  • Usando o serviço Amazon DynamoDB, crie uma tabela Games que resida na AWS em vez de localmente em seu computador.

Além disso, você também tem que configurar as permissões. Todos os recursos da AWS que você cria, como a tabela Games no DynamoDB, são privados por padrão. Somente o proprietário do recurso, que é a conta da AWS que criou a tabela Games, pode acessar essa tabela. Assim, por padrão, seu aplicativo Jogo da velha não pode atualizar a tabela Games.

Para conceder permissões necessárias, crie uma função do AWS Identity and Access Management (IAM) e conceda a essa função permissões para acessar a tabela Games. Sua instância do Amazon EC2; primeiro assume essa função. Em resposta, a AWS retorna credenciais de segurança temporárias que a instância do Amazon EC2 pode usar para atualizar a tabela Games em nome da aplicação Jogo da velha. Ao configurar sua aplicação Elastic Beanstalk, você especifica a função do IAM que a instância ou as instâncias do Amazon EC2 podem assumir. Para obter mais informações sobre funções do IAM, consulte Funções do IAM para Amazon EC2 no Guia do usuário do Amazon EC2 para instâncias do Linux.

nota

Antes de criar instâncias do Amazon EC2 para a aplicação Jogo da velha, você deve primeiro decidir a região da AWS onde deseja que o Elastic Beanstalk crie as instâncias. Depois de criar a aplicação Elastic Beanstalk, você deve fornecer os mesmos nomes de região e endpoint em um arquivo de configuração. A aplicação Jogo da velha usa informações desse arquivo para criar a tabela Games e enviar as solicitações subsequentes em uma região da AWS específica. Tanto a tabela Games do DynamoDB quanto as instâncias do Amazon EC2 iniciadas pelo Elastic Beanstalk devem estar na mesma região. Para obter uma lista das regiões disponíveis, acesse Amazon DynamoDB no Referência geral da Amazon Web Services.

Resumindo, você faz o seguinte para implantar o aplicativo Jogo da velha em produção:

  1. Crie uma função do IAM usando o serviço IAM. Você poderá anexar uma política a essa função, concedendo permissões para as ações do DynamoDB acessarem a tabela Games.

  2. Empacote o código do aplicativo Jogo da velha e um arquivo de configuração, e crie um arquivo .zip. Use o arquivo .zip para fornecer o código da aplicação Jogo da velha para o Elastic Beanstalk inserir em seus servidores. Para obter mais informações sobre a criação de um pacote, acesse Criar um pacote de origem da aplicação no Guia do desenvolvedor do AWS Elastic Beanstalk.

    No arquivo de configuração (beanstalk.config), você fornece informações sobre a região e o endpoint da AWS. A aplicação Jogo da velha usa essas informações para determinar com qual região do DynamoDB ela se comunicará.

  3. Configure o ambiente do Elastic Beanstalk. O Elastic Beanstalk inicia uma ou mais instâncias do Amazon EC2 e implanta o pacote da sua aplicação nessas instâncias. Depois que o ambiente do Elastic Beanstalk estiver pronto, você fornecerá o nome do arquivo de configuração, adicionando a variável de ambiente CONFIG_FILE.

  4. Crie uma tabela do DynamoDB. Usando o serviço Amazon DynamoDB, crie a tabela Games na AWS em vez de localmente em seu computador. Lembre-se: essa tabela tem uma chave primária simples que consiste na chave de partição GameId do tipo string.

  5. Teste o jogo em produção.

3.1: criar um perfil do IAM para oAmazon EC2

Criar uma função do IAM do tipo Amazon EC2 permitirá que a instância do Amazon EC2 que está executando sua aplicação Jogo da velha assuma a função correta e faça solicitações da aplicação para acessar a tabela Games. Ao criar a função, selecione a opção Custom Policy (Política personalizada), copie e cole a política a seguir.

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "dynamodb:ListTables" ], "Effect":"Allow", "Resource":"*" }, { "Action":[ "dynamodb:*" ], "Effect":"Allow", "Resource":[ "arn:aws:dynamodb:us-west-2:922852403271:table/Games", "arn:aws:dynamodb:us-west-2:922852403271:table/Games/index/*" ] } ] }

Para obter instruções adicionais, consulte Criação de uma função para um serviço da AWS (AWS Management Console) no Guia do usuário do IAM.

3.2: criar a tabela de jogos no Amazon DynamoDB

A tabela Games no DynamoDB armazena os dados do jogo. Se a tabela não existir, o aplicativo criará a tabela para você. Nesse caso, deixe o aplicativo criar a tabela Games.

3.3: empacotar e implantar o código da aplicação Jogo da velha

Se você seguiu as etapas deste exemplo, então, já fez download do aplicativo Jogo da velha. Caso contrário, faça download e extraia todos os arquivos para uma pasta no seu computador local. Para obter instruções, consulte Etapa 1: implantar e testar localmente.

Após extrair todos os arquivos, você terá uma pasta code. Para fazer o handoff dessa pasta para o Elastic Beanstalk, você empacotará o conteúdo dessa pasta como um arquivo .zip. Primeiramente, você precisa adicionar um arquivo de configuração a essa pasta. Sua aplicação usa as informações da região e do endpoint para criar uma tabela do DynamoDB na região especificada e fará solicitações de operação de tabela subsequentes usando o endpoint especificado.

  1. Alterne para a pasta na qual você fez download do aplicativo Jogo da velha.

  2. Na pasta raiz do aplicativo, crie um arquivo de texto chamado beanstalk.config com o conteúdo a seguir.

    [dynamodb] region=<AWS region> endpoint=<DynamoDB endpoint>

    Por exemplo, você pode usar o conteúdo a seguir.

    [dynamodb] region=us-west-2 endpoint=dynamodb.us-west-2.amazonaws.com

    Para obter uma lista de regiões disponíveis, acesse Amazon DynamoDB na Referência geral da Amazon Web Services.

    Importante

    A região especificada no arquivo de configuração é o local onde a aplicação Jogo da velha cria a tabela Games no DynamoDB. Você deve criar a aplicação Elastic Beanstalk discutida na próxima seção na mesma região.

    nota

    Ao criar sua aplicação Elastic Beanstalk, você pede para iniciar um ambiente no qual pode escolher o tipo de ambiente. Para testar o aplicativo de exemplo Jogo da velha, você pode escolher o tipo de ambiente Single Instance (Instância única), ignorar o seguinte, e ir para a próxima etapa.

    No entanto, o tipo de ambiente Load balancing, autoscaling (Balanceamento de carga, escalabilidade automática) oferece um ambiente de alta disponibilidade e escalável, algo que você deve considerar ao criar e implantar outros aplicativos. Se você escolher esse tipo de ambiente, também será necessário gerar um UUID e adicioná-lo ao arquivo de configuração, como mostrado a seguir.

    [dynamodb] region=us-west-2 endpoint=dynamodb.us-west-2.amazonaws.com [flask] secret_key= 284e784d-1a25-4a19-92bf-8eeb7a9example

    No comunicação entre cliente e servidor, quando o servidor envia a resposta, por segurança, o servidor envia um cookie assinado que o cliente envia de volta para o servidor na próxima solicitação. Quando há apenas um servidor, o servidor pode gerar localmente uma chave de criptografia quando ele for iniciado. Quando há vários servidores, todos eles precisam saber a mesma chave de criptografia; caso contrário, eles não poderão ler os cookies definidos pelos servidores do mesmo nível. Ao adicionar secret_key ao arquivo de configuração, todos os servidores são informados para usar essa chave de criptografia.

  3. Compacte o conteúdo da pasta raiz do aplicativo (que inclui o arquivo beanstalk.config), por exemplo, TicTacToe.zip.

  4. Faça upload do arquivo .zip para um bucket do Amazon Simple Storage Service (Amazon S3) Na próxima seção, você fornece este arquivo .zip para o Elastic Beanstalk para fazer upload no servidor ou servidores.

    Para obter instruções sobre como fazer upload para um bucket do Amazon S3, consulte Criar um bucket e Adicionar um objeto a um bucket no Guia do usuário do Amazon Simple Storage Service.

3.4: configurar o ambiente do AWS Elastic Beanstalk

Nesta etapa, você cria uma aplicação Elastic Beanstalk, que é um conjunto de componentes, incluindo ambientes. Para este exemplo, você inicia uma instância do Amazon EC2 para implantar e executar sua aplicação Jogo da velha.

  1. Insira o seguinte URL personalizado para configurar um console do Elastic Beanstalk para configurar o ambiente.

    https://console.aws.amazon.com/elasticbeanstalk/?region=<AWS-Region>#/newApplication ?applicationName=TicTacToeyour-name &solutionStackName=Python &sourceBundleUrl=https://s3.amazonaws.com/<bucket-name>/TicTacToe.zip &environmentType=SingleInstance &instanceType=t1.micro

    Para obter mais informações sobre URLs personalizados, acesse Construção de um URL de início imediato no Guia do desenvolvedor do AWS Elastic Beanstalk. Para obter o URL, observe o seguinte:

    • Você precisará fornecer um nome de região da AWS (o mesmo que o fornecido no arquivo de configuração), um nome de bucket do Amazon S3 e o nome do objeto.

    • Para testes, o URL solicita o tipo de ambiente SingleInstance e t1.micro como o tipo de instância.

    • O nome do aplicativo precisa ser exclusivo. Assim, no URL anterior, sugerimos que você insira seu nome ao applicationName.

    Essa ação abre o console do Elastic Beanstalk. Em alguns casos, talvez seja necessário fazer login.

  2. No console do Elastic Beanstalk, escolha Revisar e iniciar e, em seguida, selecione Iniciar.

  3. Anote o URL para referência futura. Este URL abre a página inicial do seu aplicativo Jogo da velha.

    
                            Captura de tela do aplicativo mostrando a mensagem do ambiente que está sendo criado na página inicial.
  4. Configure o aplicativo Jogo da velha para que ele saiba a localização do arquivo de configuração.

    Após o Elastic Beanstalk criar o aplicativo, escolha Configuração.

    1. Selecione o ícone de engrenagem ao lado de Software Configuration (Configuração de software), conforme mostrado na captura de tela a seguir.

      
                                    Captura de tela do aplicativo Jogo da velha mostrando o ícone de engrenagem ao lado da configuração do software.
    2. No final da seção Environment Properties (Propriedades do ambiente), digite CONFIG_FILE e seu valor beanstalk.config e depois selecione Save (Salvar).

      Pode levar alguns minutos para a atualização deste ambiente ser concluída.

      
                                    Captura de tela do aplicativo mostrando a seção de propriedades do ambiente.

    Depois que a atualização for concluída, você poderá jogar o jogo.

  5. No navegador, digite o URL que você copiou na etapa anterior, como mostrado no exemplo a seguir.

    http://<pen-name>.elasticbeanstalk.com

    Essa ação abre a página inicial do aplicativo.

    
                            Captura de tela da página inicial do aplicativo mostrando o botão de criação, convites, jogos em andamento e histórico recente.
  6. Faça login como testuser1 e selecione CREATE (Criar) para iniciar um novo jogo da velha.

  7. Digite testuser2 na caixa Choose an Opponent (Escolher um oponente).

    
                            Captura de tela do aplicativo mostrando a caixa para escolha de um oponente.
  8. Abra outra janela do navegador.

    Certifique-se de limpar todos os cookies em sua janela do navegador, de modo que você não se conecte como o mesmo usuário.

  9. Digite o mesmo URL para abrir a página inicial do aplicativo, como mostrado no exemplo a seguir:

    http://<env-name>.elasticbeanstalk.com
  10. Faça login como testuser2.

  11. Para o convite de testuser1 na lista de convites pendentes, selecione accept (aceitar).

    
                            Captura de tela do aplicativo mostrando o convite testuser1 na lista de convites.
  12. Agora a página do jogo aparece.

    
                            Captura de tela do aplicativo mostrando uma tabela de jogo da velha vazia.

    testuser1 e testuser2 pode jogar o jogo. Para cada movimento, o aplicativo salva a movimentação no item correspondente na tabela Games.