JP

5 de set de 20212 min

Enviando mensagens para fila SQS via Python + boto3

Atualizado: 29 de abr de 2023

Tenho experimentado Python e tenho me surpreendido com a facilidade no desenvolvimento e sem muitas configurações de projeto. Para este post, vamos criar um exemplo de como criar uma fila SQS e enviar mensagens utilizando Python e boto3, que possui uma grande variedade de métodos para acesso aos recursos da AWS.

Instalando boto3

A instalação é bem simples, assegure-se que já exista o Python instalado em seu ambiente. Caso já exista, via terminal, execute o comando a seguir para a instalação do boto3.

pip install boto3

Importando boto3 para o projeto

Após instalado, vamos escrever o nosso código em partes, começando pelo import da biblioteca boto3 e atribuindo para uma variável sqs e client, conforme imagem abaixo:

import boto3
 
sqs = boto3.resource('sqs')
 
client = boto3.client('sqs')

Criando fila SQS

Criando uma function que criará a fila SQS passando alguns parâmetros como, name e attributes.

def create_sqs(name, attributes):
 
sqs.create_queue(QueueName=name, Attributes=attributes)

Envio de mensagens para a fila SQS

Criando uma function que enviará as mensagens para a fila SQS

def send_messages_to_sqs(name, message):
 
queue = sqs.get_queue_by_name(QueueName=name)
 
client.send_message(QueueUrl=queue.url, MessageBody=message)

No código acima, existe um método chamado get_queue_by_name que no qual precisamos usar para recuperar a url da fila existente, para que seja repassada para o método send_message

Executando o código

Após criada as functions, vamos executar o código para a criação da fila SQS e o envio das mensagens.

if __name__ == '__main__':
 

 
attributes = {
 
'DelaySeconds': '60',
 
'MessageRetentionPeriod': '600'
 
}
 

 
create_sqs('sqs_messages', attributes)
 

 
send_messages_to_sqs('sqs_messages', "Hello, SQS!")

Código completo

import boto3
 

 
sqs = boto3.resource('sqs')
 
client = boto3.client('sqs')
 

 

 
def create_sqs(name, attributes):
 
sqs.create_queue(QueueName=name, Attributes=attributes)
 

 
def send_messages_to_sqs(name, message):
 
queue = sqs.get_queue_by_name(QueueName=name)
 
client.send_message(QueueUrl=queue.url, MessageBody=message)
 

 
if __name__ == '__main__':
 

 
attributes = {
 
'DelaySeconds': '60',
 
'MessageRetentionPeriod': '600'
 
}
 

 
create_sqs('sqs_messages', attributes)
 

 
send_messages_to_sqs('sqs_messages', "Hello, SQS!")

Simples, certo? É um código prático que permite acessar recursos da AWS com poucas linhas de código. Sou novo em Python e espero trazer mais posts como este, assim vamos aprendendo juntos =)

É isso, curtiu? Até mais!

    5