

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Gestione di messaggi Amazon SQS di grandi dimensioni con Python e Amazon S3
<a name="extended-client-library-python"></a>

Usa la Amazon SQS [Amazon SQS Extended Client Library for Python](https://github.com/awslabs/amazon-sqs-python-extended-client-lib/) con Amazon S3 per gestire messaggi Amazon SQS di grandi dimensioni, in particolare per payload compresi tra 256 KB e 2 GB. La libreria archivia il payload del messaggio in un bucket Amazon S3 e invia un messaggio contenente un riferimento all'oggetto memorizzato nella coda Amazon SQS.

Con la Amazon SQS Extended Client Library per Python, puoi:
+ Specificare se i payload sono sempre archiviati in Amazon S3 o archiviati solo in Amazon S3 quando una dimensione del payload supera i 256 KB 
+ Invia un messaggio che fa riferimento a un singolo oggetto di messaggio archiviato in un bucket Amazon S3 
+ Recupera l'oggetto payload corrispondente da un bucket Amazon S3 
+ Eliminare l'oggetto payload corrispondente da un bucket Amazon S3

## Prerequisiti
<a name="extended-client-library-prerequisites"></a>

 Di seguito sono riportati i prerequisiti per l'utilizzo della Amazon SQS Extended Client Library for Python: 
+ Un AWS account con le credenziali necessarie. Per creare un AWS account, vai alla [AWS home page](https://aws.amazon.com/), quindi scegli **Crea un AWS account**. Segui le istruzioni. Per informazioni sulle credenziali, consulta [Credenziali](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html). 
+ Un AWS SDK: l'esempio in questa pagina utilizza AWS Python SDK Boto3. *Per installare e configurare l'SDK, consulta la documentazione dell'[https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) nella Guida per sviluppatori SDK AWS for Python* 
+ Python 3.x (o successivo) e. `pip`
+  [La libreria Amazon SQS Extended Client per Python, disponibile da PyPI](https://pypi.org/project/amazon-sqs-extended-client/) 

**Nota**  
 Puoi utilizzare Amazon SQS Extended Client Library for Python per gestire i messaggi Amazon SQS utilizzando Amazon S3 solo con l'SDK per Python. AWS Non puoi farlo con la AWS CLI, la console Amazon SQS, l'API HTTP di Amazon SQS o qualsiasi altra. AWS SDKs 

## Configurazione dello storage dei messaggi
<a name="configuring-message-storage-python"></a>

 Amazon SQS Extended Client utilizza i seguenti attributi dei messaggi per configurare le opzioni di storage dei messaggi di Amazon S3: 
+  `large_payload_support`: il nome del bucket Amazon S3 per archiviare messaggi di grandi dimensioni. 
+  `always_through_s3`: Se`True`, allora tutti i messaggi vengono archiviati in Amazon S3. Se`False`, i messaggi di dimensioni inferiori a 256 KB non verranno serializzati nel bucket s3. Il valore predefinito è `False`. 
+  `use_legacy_attribute`: Se`True`, tutti i messaggi pubblicati utilizzano l'attributo Legacy reserved message (`SQSLargePayloadSize`) anziché l'attuale attributo riservato del messaggio (). `ExtendedPayloadSize` 

## Gestione di messaggi Amazon SQS di grandi dimensioni con Extended Client Library for Python
<a name="extended-client-library-python-code-example"></a>

 L'esempio seguente crea un bucket Amazon S3 con un nome casuale. Quindi crea una coda Amazon SQS denominata `MyQueue` e invia un messaggio che viene archiviato in un bucket S3 e contiene più di 256 KB nella coda. Infine, il codice utilizza il messaggio, restituisce informazioni su di esso e poi elimina il messaggio, la coda e il 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
```