https://a.storyblok.com/f/270183/85205/be7b482f3a/blog_message-migration_1200x600.png

Migração automatizada de mensagens do AWS SQS para o DynamoDB

Publicado em June 15, 2020

Tempo de leitura: 4 minutos

Os aplicativos corporativos recebem um volume muito alto de notificações, o que pode causar graves problemas nos aplicativos. Em vez de sobrecarregar um aplicativo ou ter que aumentar e reduzir constantemente a capacidade de acordo com picos de uso, o uso de uma fila de mensagens como AWS SQS pode regular a carga. Ao adicionar mensagens à fila, o aplicativo pode processá-las de maneira mais oportuna e econômica.

Neste exemplo, você criará um microsserviço PHP sem servidor no AWS Lambda usando este aplicativo PHP disponível no GitHub que utiliza Brefe Serverless. A aplicação sem servidor migra mensagens do AWS SQS para o Amazon DynamoDBe, em seguida, exclui a mensagem do SQS após serem processadas.

Pré-requisitos

Instruções de configuração

Clone o nexmo-community/messaging-aws-sqs-dynamodb-php do GitHub e acesse o diretório recém-criado para continuar.

Use o Composer para instalar dependências

Este exemplo requer o uso do Composer para instalar dependências e configurar o carregador automático.

Supondo que você tenha o Composer instalado globalmente. https://getcomposer.org/doc/00-intro.md#globally

composer install

Configuração da AWS

Você precisará criar credenciais da AWS conforme indicado por Serverless.

Além disso, crie uma nova fila SQS usando as configurações padrão. Anote o ARN para uso posterior.

Por fim, crie uma nova tabela no DynamoDB usando as configurações padrão. Anote o nome da tabela e o ARN para uso posterior.

Observação: Certifique-se de que o nome do campo da chave primária definido para a tabela do DynamoDB corresponda ao ID da mensagem nos itens da sua fila do SQS. Neste exemplo, usamos messageId.

Atualizar o ambiente

Renomeie o config.yml.dist para config.yml e atualize os valores conforme necessário a partir de AWS e DynamoDB, e salve.

AWS_REGION: us-east-1
AWS_VERSION: latest
AWS_DYNAMODB_TABLE_NAME:
AWS_SQS_ARN:
AWS_DYNAMODB_TABLE_ARN:

Implantar no Lambda

Com todas as atualizações acima concluídas com sucesso, agora você pode usar Serverless para implantar o aplicativo no AWS Lambda.

serverless deploy

Invocar

Se já houver mensagens no SQS, você pode testar a migração dessas mensagens a partir de SQS para DynamoDB , chamando a função usando Serverless localmente:

serverless invoke -f sqstodynamo

Observação: O exemplo acima mostra o uso do nome da função sqstodynamo conforme criado no padrão serverless.yml neste exemplo.

Para fazer testes, você pode adicionar mensagens SQS pelo AWS Console site, ou você pode dar uma olhada neste este repositório para ver um exemplo de como adicionar SQS mensagens por meio de uma HTTP POST solicitação contendo JSON.

Automatizar

Para automatizar o uso dessa função, você pode adicionar a função recém-criada Lambda como um gatilho do Lambda para sua SQS instância.

Ao adicionar o gatilho, garante-se que qualquer nova SQS mensagem chame a Lambda função para mover automaticamente a mensagem para DynamoDB, removendo, assim, a mensagem de SQS.

Contribuir

Se você tiver alguma dúvida ou encontrar algum problema, entre em contato com @VonageDev no Twitter ou fazer sua pergunta na Comunidade Vonage no Slack. Boa sorte.

Compartilhar:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpEx-funcionários da Vonage

Adam é um desenvolvedor e consultor que gosta de corridas de ultramaratona, escrever em blogs e gravar vlogs, além de ajudar outras pessoas a dominar a tecnologia para realizar coisas incríveis, movido por um desejo insaciável de orientar e ajudar.