
Compartilhar:
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.
Uso de uma fila de mensagens com SMS para lidar com limitações de taxa de transferência
Em alguns países, a limitação da taxa de transferência de SMS e os tempos de resposta lentos (às vezes de apenas uma solicitação por segundo) representam desafios para o envio em massa. Uma maneira de contornar essas limitações é usar uma fila de mensagens, como o AWS SQS.
Neste exemplo, você criará um microsserviço sem servidor no AWS Lambda usando este aplicativo em Python disponível no GitHub que utiliza o Flaske Serverless. O aplicativo tem duas finalidades: ele insere mensagens no AWS SQS e, em seguida, facilita o envio propriamente dito por meio do SMS da Vonage , conforme solicitado.
Pré-requisitos
Python 3.8 (atualização
serverless.ymlse desejar uma versão superior)Pip
Node.js e npm
Instruções de configuração
Clone o repositório nexmo-community/sms-aws-sqs-python-sender no GitHub e acesse o diretório recém-criado para continuar.
Meio ambiente
Renomear .env.default para .env e adicione valores a VONAGE_API_KEY e VONAGE_API_SECRET fornecidos no seu Painel da API da Vonage.
Configuração da AWS
Você precisa criar credenciais da AWS conforme indicado pelo Serverless. Atualize o .env arquivo com essas informações.
Além disso, crie uma nova fila FIFO do SQS usando as configurações padrão e atualize .env com a URL da fila SQS. O FIFO garante que as mensagens sejam enviadas na ordem em que foram armazenadas.
Uso
Para começar, crie um virtualenv na raiz do projeto para abrigar o projeto. Em seguida, ative-o da seguinte maneira:
Em seguida, inicialize o npm e siga as instruções, selecionando as opções padrão, a menos que deseje alterar alguma delas. Além disso, use o npm para instalar as dependências necessárias para o DEV, a fim de permitir que o Serverless e o Lambda funcionem com o aplicativo Flask.
Agora você pode usar o pip para instalar as dependências necessárias do Python. As dependências estão no arquivo requirements.txt; portanto, indique ao pip para usá-lo.
Corrida local
Caso deseje executar o aplicativo localmente e testá-lo antes de implantá-lo no AWS Lambda, você pode executá-lo com o seguinte comando:
Por padrão, isso disponibiliza o aplicativo em http://localhost:5000. Você clica em Ctrl+c para fechá-lo.
Implantar no Lambda
Depois de concluir com sucesso todas as etapas acima, você já pode usar o Serverless para implantar o aplicativo no AWS Lambda.
IMPORTANTE: Este aplicativo não possui nenhuma autenticação para uso. Portanto, certifique-se de adicionar uma autenticação antes de usá-lo para impedir o uso público. Deixá-lo aberto ao público pode resultar em cobranças pela AWS e pela Vonage.
Pontos de extremidade disponíveis
Existem 3 pontos de extremidade de URL disponíveis neste cliente:
1 solicitação GET para /
Não executa nenhuma ação, mas oferece uma maneira rápida de testar
2 Solicitação POST para /add
Essa ação armazena a mensagem no SQS.
Envie uma solicitação POST com um corpo JSON como o seguinte. Substitua os marcadores de lugar, indicados com
<>, pelos seus dados.O resultado contém o SQS
MessageId.
{
"from": "<your_name_or_number>",
"message": "<sms_message_contents>",
"to": "<recipients_number>"
}
3 Solicitação GET para /process
Inicia o processo de envio.
Recupera mensagens da fila FIFO do SQS.
Conecta-se ao Nexmo e envia a mensagem SMS.
location=None, media_mode=relayed, archive_mode=manual Exemplos:
Acesse a URL fornecida pelo processo de implantação. Veja a seguir alguns exemplos de como podem ser essas solicitações: (Sua URL pode variar.)
OBTER https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/
O / endpoint retorna a mensagem genérica.
POST https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/add
O add ponto final retorna o SQS MessageId.
OBTER https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/process
O process endpoint retorna uma mensagem indicando que o envio foi bem-sucedido.
Desativando o Virtualenv
Para sair do virtualenv, você pode desativá-lo quando quiser.
NOTA: Dependendo do sistema operacional, talvez seja necessário adicionar
virtualenvao comando acima.
Próximos passos
Neste exemplo, o aplicativo contém um /process ponto de extremidade que pode ser chamado por meio de uma solicitação HTTP GET em intervalos programados. Como alternativa, o código em /process poderia ser colocado em uma função Lambda separada e chamado diretamente a partir de eventos agendados do CloudWatch, em vez de uma solicitação HTTP GET.
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.