

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

# Gerenciar mensagens grandes do Amazon SQS usando Python e Amazon S3
<a name="extended-client-library-python"></a>

Use a [biblioteca do cliente em versão ampliada para Python do Amazon SQS](https://github.com/awslabs/amazon-sqs-python-extended-client-lib/) com o Amazon S3 para enviar mensagens grandes do Amazon SQS, principalmente cargas úteis entre 256 KB e 2 GB. A biblioteca armazena a carga útil da mensagem em um bucket do Amazon S3 e envia uma mensagem contendo uma referência do objeto armazenado na fila do Amazon SQS.

Com a biblioteca do cliente em versão ampliada para Python do Amazon SQS, você pode:
+ Especificar se as cargas úteis devem ser sempre armazenadas no Amazon S3 ou apenas no Amazon S3 quando uma carga útil tiver mais de 256 KB. 
+ Enviar uma mensagem que faça referência a um único objeto de mensagem armazenado em um bucket do Amazon S3. 
+ Recuperar o objeto de carga útil correspondente de um bucket do Amazon S3 
+ Excluir o objeto de carga útil correspondente de um bucket do Amazon S3

## Pré-requisitos
<a name="extended-client-library-prerequisites"></a>

 Veja abaixo os pré-requisitos para usar a biblioteca do cliente em versão ampliada para Python do Amazon SQS: 
+ Uma AWS conta com as credenciais necessárias. Para criar uma AWS conta, navegue até a [página AWS inicial](https://aws.amazon.com/) e escolha **Criar uma AWS conta**. Siga as instruções. Consulte informações sobre credenciais em [Credentials](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html). 
+ Um AWS SDK: o exemplo nesta página usa o AWS Python SDK Boto3. Para instalar e configurar o SDK, consulte a documentação do [*AWS SDK para Python*](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) no *Guia do desenvolvedor do AWS SDK para Python* 
+ Python 3.x (ou posterior) e `pip`.
+  A biblioteca do cliente em versão ampliada para Python do Amazon SQS, também disponível no [PyPI](https://pypi.org/project/amazon-sqs-extended-client/) 

**nota**  
 Você pode usar a Amazon SQS Extended Client Library para Python para gerenciar mensagens do Amazon SQS usando o Amazon S3 somente com o SDK para Python. AWS Você não pode fazer isso com a AWS CLI, o console do Amazon SQS, a API HTTP do Amazon SQS ou qualquer outra. AWS SDKs 

## Configurar o armazenamento de mensagens
<a name="configuring-message-storage-python"></a>

 O cliente em versão ampliada do Amazon SQS usa os seguintes atributos de mensagem para configurar as opções de armazenamento de mensagens do Amazon S3: 
+  `large_payload_support`: o nome do bucket do Amazon S3 para armazenar mensagens grandes. 
+  `always_through_s3`: se `True`, então todas as mensagens serão armazenadas no Amazon S3. Se `False`, mensagens menores que 256 KB não serão serializadas no bucket do S3. O padrão é `False`. 
+  `use_legacy_attribute`: se `True`, todas as mensagens publicadas usam o atributo de mensagem reservada legado (`SQSLargePayloadSize`) em vez do atributo de mensagem reservada atual (`ExtendedPayloadSize`). 

## Gerenciar mensagens grandes do Amazon SQS com a biblioteca do cliente em versão ampliada para Python
<a name="extended-client-library-python-code-example"></a>

 O exemplo a seguir cria um bucket do Amazon S3 com um nome aleatório. Depois, ele cria uma fila do Amazon SQS chamada `MyQueue` e envia para ela uma mensagem que é armazenada em um bucket do S3 e é maior que 256 KB. Por fim, o código recupera a mensagem, retorna informações sobre ela e, em seguida, exclui a mensagem, a fila e o bucket. 

```
import boto3
import sqs_extended_client

#Set the Amazon SQS extended client configuration with large payload.
sqs_extended_client = boto3.client("sqs", region_name="us-east-1")
sqs_extended_client.large_payload_support = "amzn-s3-demo-bucket" 
sqs_extended_client.use_legacy_attribute = False


# Create an SQS message queue for this example. Then, extract the queue URL.
queue = sqs_extended_client.create_queue(
    QueueName = "MyQueue"
)
queue_url = sqs_extended_client.get_queue_url(
    QueueName = "MyQueue"
)['QueueUrl']


# Create the S3 bucket and allow message objects to be stored in the bucket. 
sqs_extended_client.s3_client.create_bucket(Bucket=sqs_extended_client.large_payload_support)

# Sending a large message
small_message = "s"
large_message = small_message * 300000 # Shall cross the limit of 256 KB

send_message_response = sqs_extended_client.send_message(
    QueueUrl=queue_url,
    MessageBody=large_message
)
assert send_message_response['ResponseMetadata']['HTTPStatusCode'] == 200

# Receiving the large message
receive_message_response = sqs_extended_client.receive_message(
    QueueUrl=queue_url,
    MessageAttributeNames=['All']
)
assert receive_message_response['Messages'][0]['Body'] == large_message
receipt_handle = receive_message_response['Messages'][0]['ReceiptHandle']

# Deleting the large message
# Set to True for deleting the payload from S3
sqs_extended_client.delete_payload_from_s3 = True 
delete_message_response = sqs_extended_client.delete_message(
    QueueUrl=queue_url,
    ReceiptHandle=receipt_handle
)

assert delete_message_response['ResponseMetadata']['HTTPStatusCode'] == 200

# Deleting the queue
delete_queue_response = sqs_extended_client.delete_queue(
    QueueUrl=queue_url
)

assert delete_queue_response['ResponseMetadata']['HTTPStatusCode'] == 200
```