
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.
Utilizando o Amazon SQS para enfileirar mensagens com o AWS Lambda e Python
Quando se espera receber grandes volumes de mensagens, garantir que todas sejam recebidas pode ser problemático. Uma maneira de contornar essas dificuldades é 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)Node.js e npm
Instruções de configuração
Clone o repositório nexmo-community/sms-aws-sqs-python-receiver do 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 pelo seu Painel da API da Vonage.
Configuração da AWS
Você precisará 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 uso do 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 à medida que você for avançando. 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 você queira alterar alguma delas. Além disso, use o npm para instalar as dependências necessárias para o desenvolvimento, 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 já estão listadas no arquivo requirements.txt; portanto, indique ao pip que ele deve usá-lo.
Executando localmente
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 disponibilizará o aplicativo em http://localhost:5000. Ao clicar em Ctrl+c fechará o aplicativo.
Implantar no Lambda
Depois de concluir com sucesso todas as etapas acima, agora você pode usar 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 4 pontos de extremidade de URL disponíveis neste cliente:
1 solicitação HTTP GET para /
Não executa nenhuma ação, mas oferece uma maneira rápida de testar
2. Solicitação HTTP 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 HTTP GET para /get
Recupera a mensagem da fila FIFO do SQS.
Assim que for recebido, o
ReceiptHandlepode ser usado para removê-lo da fila.
location=None, media_mode=relayed, archive_mode=manual4 Solicitação HTTP POST para /delete
Essa ação exclui a mensagem do SQS.
Envie uma solicitação POST com um corpo JSON como o seguinte. Substitua os marcadores de lugar, indicados com
<>, pelos seus dados.
{
"receipt_handle": "<your_receipt_handle>",
}
Exemplos:
Acesse a URL fornecida pelo processo de implantação. Veja a seguir alguns exemplos de como podem ser essas solicitações: (Sua URL poderá 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 retornará o SQS MessageId.
OBTER https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/get
O get endpoint retornará uma mensagem para uso.
OBTER https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/delete
O delete endpoint excluirá uma mensagem do SQS.
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
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.