

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

# Effettuazione di richieste API di query utilizzando il protocollo AWS JSON in Amazon SQS
<a name="sqs-making-api-requests-json"></a>

Questo argomento spiega come costruire un endpoint Amazon SQS, effettuare richieste POST e interpretare le risposte.

**Nota**  
AWS Il protocollo JSON è supportato per la maggior parte delle varianti linguistiche. Per un elenco delle varianti di linguaggi supportate, consulta [Quali lingue sono supportate per il protocollo AWS JSON utilizzato in Amazon APIs SQS?](sqs-json-faqs.md#json-protocol-supported-languages).

## Costruzione di un endpoint
<a name="sqs-api-constructing-endpoints-json"></a>

Per utilizzare le code Amazon SQS, è necessario creare un endpoint. Per informazioni sugli endpoint Amazon SQS, consulta le seguenti pagine in *Riferimenti generali di Amazon Web Services*:
+ [Endpoint regionali](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)
+ [Endpoint e quote di Amazon Simple Queue Service](https://docs.aws.amazon.com/general/latest/gr/sqs-service)

Ogni endpoint Amazon SQS è completamente indipendente. Ad esempio, se due code sono denominate *MyQueue* e una ha l'endpoint `sqs.us-east-2.amazonaws.com`, mentre l'altra ha l'endpoint `sqs.eu-west-2.amazonaws.com`, le due code non condividono alcun dato tra loro.

Di seguito è riportato un esempio di un endpoint che invia una richiesta per creare una coda. 

```
POST / HTTP/1.1
Host: sqs.us-west-2.amazonaws.com
X-Amz-Target: AmazonSQS.CreateQueue
X-Amz-Date: <Date>
Content-Type: application/x-amz-json-1.0
Authorization: <AuthParams>
Content-Length: <PayloadSizeBytes>
Connection: Keep-Alive 
{
    "QueueName":"MyQueue",
    "Attributes": {
        "VisibilityTimeout": "40"
    },
    "tags": {
        "QueueType": "Production"
    }
}
```

**Nota**  
I nomi delle code e la coda fanno distinzione tra maiuscole e URLs minuscole.  
La struttura di *`AUTHPARAMS`* dipende dalla modalità di firma della richiesta API. Per ulteriori informazioni, consulta [Signing AWS API Requests](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) nel *Amazon Web Services General Reference*.

## Effettuare una richiesta POST
<a name="structure-post-request"></a>

Una richiesta Amazon SQS POST invia i parametri di query come modulo nel corpo di una richiesta HTTP.

Di seguito è riportato un esempio di intestazione HTTP con `X-Amz-Target` impostato su `AmazonSQS.<operationName>` e di intestazione HTTP con `Content-Type` impostato su `application/x-amz-json-1.0`.

```
POST / HTTP/1.1
Host: sqs.<region>.<domain>
X-Amz-Target: AmazonSQS.SendMessage
X-Amz-Date: <Date>
Content-Type: application/x-amz-json-1.0
Authorization: <AuthParams>
Content-Length: <PayloadSizeBytes>
Connection: Keep-Alive 
{
    "QueueUrl": "https://sqs.<region>.<domain>/<awsAccountId>/<queueName>/",
    "MessageBody": "This is a test message"
}
```

Questa richiesta HTTP POST invia un messaggio a una coda Amazon SQS.

**Nota**  
Entrambe le intestazioni HTTP `X-Amz-Target` e `Content-Type` sono obbligatorie.  
Il client HTTP potrebbe aggiungere altri elementi alla richiesta HTTP, a seconda della versione HTTP del client.

# Interpretazione delle risposte dell'API JSON di Amazon SQS
<a name="sqs-json-api-responses"></a>

Quando invii una richiesta ad Amazon SQS, viene restituita una risposta JSON con i risultati. La struttura della risposta dipende dall'azione API utilizzata.

Per comprendere i dettagli di queste risposte, consulta:
+ L'azione API specifica nelle [azioni API](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Operations.html) nel riferimento all'*API di Amazon Simple Queue Service*
+ La [Protocollo Amazon SQS JSON AWS FAQs](sqs-json-faqs.md)

## Struttura di una risposta JSON corretta
<a name="sqs-json-api-successful-response-structure"></a>

Se la richiesta ha esito positivo, l'elemento di risposta principale è `x-amzn-RequestId`, che contiene l'Universal Unique Identifier (UUID) della richiesta e altri campi di risposta aggiunti. Ad esempio, l'elemento [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) contiene il campo `QueueUrl` che, a sua volta, contiene l'URL della coda creata.

```
HTTP/1.1 200 OK
x-amzn-RequestId: <requestId>
Content-Length: <PayloadSizeBytes>
Date: <Date>
Content-Type: application/x-amz-json-1.0
{
    "QueueUrl":"https://sqs.us-east-1.amazonaws.com/111122223333/MyQueue"
}
```

## Struttura di una risposta di errore JSON
<a name="sqs-api-error-response-structure"></a>

Se una richiesta genera un errore, Amazon SQS restituisce la risposta principale, inclusi l'intestazione HTTP e il corpo.

Nell'intestazione HTTP, `x-amzn-RequestId` contiene l'UUID della richiesta. `x-amzn-query-error` contiene due informazioni: il tipo di errore e se si tratta di un errore del produttore o del consumatore. 

Nel corpo della risposta, `"__type"` indica altri dettagli sull'errore e `Message` indica la condizione di errore in un formato leggibile. 

Di seguito è riportato un esempio di risposta di errore in formato JSON:

```
HTTP/1.1 400 Bad Request
x-amzn-RequestId: 66916324-67ca-54bb-a410-3f567a7a0571
x-amzn-query-error: AWS.SimpleQueueService.NonExistentQueue;Sender
Content-Length: <PayloadSizeBytes>
Date: <Date>
Content-Type: application/x-amz-json-1.0
{
    "__type": "com.amazonaws.sqs#QueueDoesNotExist",
    "message": "The specified queue does not exist."
}
```

# Protocollo Amazon SQS JSON AWS FAQs
<a name="sqs-json-faqs"></a>

Questo argomento copre le domande frequenti sull'uso del protocollo AWS JSON con Amazon SQS.

## Cos'è il protocollo AWS JSON e in che cosa differisce dalle richieste e dalle risposte API Amazon SQS esistenti?
<a name="json-protocol-what-is"></a>

JSON è uno dei metodi di cablaggio più utilizzati e accettati per la comunicazione tra sistemi eterogenei. Amazon SQS utilizza JSON come mezzo per comunicare tra un client AWS SDK (ad esempio, Java, Python, Golang) JavaScript e il server Amazon SQS. Una richiesta HTTP di un'operazione API Amazon SQS accetta input in formato JSON. L'operazione Amazon SQS viene eseguita e la risposta di esecuzione viene inviata al client SDK in formato JSON. Rispetto alle query AWS , JSON è più efficiente in termini di trasporto dei dati tra client e server. 
+ Il protocollo Amazon SQS AWS JSON funge da mediatore tra il client e il server Amazon SQS.
+ Il server non comprende il linguaggio di programmazione in cui viene creata l'operazione Amazon SQS, ma comprende il AWS protocollo JSON.
+ Il protocollo Amazon SQS AWS JSON utilizza la serializzazione (conversione dell'oggetto in formato JSON) e la deserializzazione (conversione del formato JSON in oggetto) tra il client e il server Amazon SQS.

## Come posso iniziare a usare i protocolli AWS JSON per Amazon SQS?
<a name="json-protocol-getting-started"></a>

Per iniziare a usare l'ultima versione dell' AWS SDK e ottenere una messaggistica più veloce per Amazon SQS, aggiorna AWS il tuo SDK alla versione specificata o a qualsiasi versione successiva. Per ulteriori informazioni sui client SDK, consulta la colonna Guida nella tabella seguente.

Di seguito è riportato un elenco di versioni SDK in diverse varianti linguistiche per il protocollo AWS JSON da utilizzare con Amazon SQS: APIs


| Lingua | Archivio client SDK | Versione del client SDK richiesta | Guida | 
| --- | --- | --- | --- | 
|  C\$1\$1  |  [aws/ aws-sdk-cpp](https://github.com/aws/aws-sdk-cpp)  |  [1.11,98](https://github.com/aws/aws-sdk-cpp/releases/tag/1.11.198)  |  [AWS SDK per C\$1\$1](https://aws.amazon.com/sdk-for-cpp/)  | 
|  Golang 1.x  |  [aws/ aws-sdk-go](https://github.com/aws/aws-sdk-go)  |  [v1.47.7](https://github.com/aws/aws-sdk-go/releases/tag/v1.47.7)  |  [AWS SDK for Go](https://aws.amazon.com/sdk-for-go/)  | 
|  Golang 2.x  |  [aws/2 aws-sdk-go-v](https://github.com/aws/aws-sdk-go-v2)  |  [v1.28.0](https://github.com/aws/aws-sdk-go-v2/blob/release-2023-11-09/service/sqs/CHANGELOG.md#v1270-2023-11-09)  |  [AWS SDK per Go V2](https://aws.github.io/aws-sdk-go-v2/docs/)  | 
|  Java 1.x  |  [aws/ aws-sdk-java](https://github.com/aws/aws-sdk-java)  |  [1,12.585](https://github.com/aws/aws-sdk-java/releases/tag/1.12.585)  |  [AWS SDK per Java](https://aws.amazon.com/sdk-for-java/)  | 
|  Java 2.x  |  [seghe/2 aws-sdk-java-v](https://github.com/aws/aws-sdk-java-v2)  |  [2,21,19](https://github.com/aws/aws-sdk-java-v2/releases/tag/2.21.19)  |  [AWS SDK per Java](https://aws.amazon.com/sdk-for-java/)  | 
|  JavaScript v2.x  |  [aws/ aws-sdk-js](https://github.com/aws/aws-sdk-js)  |  [JavaScript su AWS](https://aws.amazon.com/developer/language/javascript/)  | 
|  JavaScript v3.x  |  [aws/ 3 aws-sdk-js-v](https://github.com/aws/aws-sdk-js-v3)  |  [v3.447.0](https://github.com/aws/aws-sdk-js-v3/releases/tag/v3.447.0)  |  [JavaScript su AWS](https://aws.amazon.com/developer/language/javascript/)  | 
|  .NET  |  [seghe/aws-sdk-net](https://github.com/aws/aws-sdk-net)  |  [3,7681,0](https://github.com/aws/aws-sdk-net/releases/tag/3.7.681.0)  |  [AWS SDK per.NET](https://aws.amazon.com/sdk-for-net/)  | 
|  PHP  |  [aws/ aws-sdk-php](https://github.com/aws/aws-sdk-php)  |  [3,285,2](https://github.com/aws/aws-sdk-php/releases/tag/3.285.2)  |  [AWS SDK per PHP](https://aws.amazon.com/sdk-for-php/)  | 
|  Python-boto3  |   [boto/boto3](https://github.com/boto/boto3)   |  [1.28.82](https://github.com/boto/boto3/releases/tag/1.28.82)  |  [AWS SDK per Python (Boto3)](https://aws.amazon.com/sdk-for-python/)  | 
|  Python-botocore  |   [boto/botocore](https://github.com/boto/botocore/)   |  [1.31.82](https://github.com/boto/botocore/releases/tag/1.31.82)  |  [AWS SDK per Python (Boto3)](https://aws.amazon.com/sdk-for-python/)  | 
|  awscli  |  [CLI AWS](https://github.com/aws/aws-cli)  |  [1.29.82](https://github.com/aws/aws-cli/releases/tag/1.29.82)  |  [Interfaccia a riga di comando AWS](https://aws.amazon.com/cli/)  | 
|  Ruby  |  [seghe/aws-sdk-ruby](https://github.com/aws/aws-sdk-ruby)  |  [1.67,0](https://rubygems.org/gems/aws-sdk-sqs/versions/1.67.0)  |  [AWS SDK per Ruby](https://aws.amazon.com/sdk-for-ruby/)  | 

## Quali sono i rischi dell'abilitazione del protocollo JSON per i miei carichi di lavoro Amazon SQS?
<a name="json-protocol-risks"></a>

Se utilizzi un'implementazione personalizzata di AWS SDK o una combinazione di client personalizzati e AWS SDK per interagire con Amazon SQS che AWS genera risposte basate su Query (ovvero basate su XML), potrebbe essere incompatibile con il protocollo JSON. AWS In caso di problemi, contatta l' AWS assistenza.

## Cosa succede se uso già la versione AWS SDK più recente, ma la mia soluzione open source non supporta JSON?
<a name="json-protocol-sdk-version-open-source"></a>

È necessario modificare la versione dell'SDK con la versione precedente a quella in uso. [Come posso iniziare a usare i protocolli AWS JSON per Amazon SQS?](#json-protocol-getting-started)Per ulteriori informazioni, vedere. AWS Le versioni SDK elencate in [Come posso iniziare a usare i protocolli AWS JSON per Amazon SQS?](#json-protocol-getting-started) utilizzano il protocollo Wire JSON per Amazon SQS. APIs Se modifichi il tuo AWS SDK alla versione precedente, Amazon APIs SQS AWS utilizzerà la query.

## Quali lingue sono supportate per il protocollo AWS JSON utilizzato in Amazon APIs SQS?
<a name="json-protocol-supported-languages"></a>

Amazon SQS supporta tutte le varianti linguistiche in cui AWS SDKs sono generalmente disponibili (GA). Al momento non supportiamo Kotlin, Rust o Swift. Per saperne di più sulle altre varianti linguistiche, consulta [Strumenti per costruire su AWS](https://aws.amazon.com/developer/tools/).

## Quali regioni sono supportate per il protocollo AWS JSON utilizzato in Amazon SQS APIs
<a name="json-protocol-supported-regions"></a>

Amazon SQS supporta il protocollo AWS JSON in tutte le [AWS regioni](https://docs.aws.amazon.com/general/latest/gr/sqs-service.html) in cui è disponibile Amazon SQS. 

## Quali miglioramenti della latenza posso aspettarmi eseguendo l'aggiornamento alle versioni AWS SDK specificate per Amazon SQS utilizzando il protocollo JSON? AWS
<a name="json-protocol-upgrading-sdk"></a>

AWS Il protocollo JSON è più efficiente nella serializzazione e deserializzazione di richieste e risposte rispetto al protocollo di query. AWS In base ai test AWS delle prestazioni per un payload di messaggi di 5 KB, il protocollo JSON per Amazon SQS end-to-end riduce la latenza di elaborazione dei messaggi fino al 23% e riduce l'utilizzo della CPU e della memoria lato client dell'applicazione. 

## Il protocollo di interrogazione sarà obsoleto AWS ?
<a name="query-protocol"></a>

AWS il protocollo di interrogazione continuerà a essere supportato. Puoi continuare a utilizzare il protocollo di AWS query purché la tua versione dell' AWS SDK sia impostata su una versione precedente diversa da quella elencata in [Come iniziare a usare i protocolli AWS JSON per Amazon SQS.](#json-protocol-getting-started)

## Dove posso trovare ulteriori informazioni sul AWS protocollo JSON?
<a name="json-protocol-more-info"></a>

Puoi trovare ulteriori informazioni sul protocollo JSON nel [AWS protocollo JSON 1.0](https://smithy.io/2.0/aws/protocols/aws-json-1_0-protocol.html) nella documentazione *Smithy*. Per ulteriori informazioni sulle richieste API di Amazon SQS che utilizzano il protocollo AWS JSON, consulta [Effettuazione di richieste API di query utilizzando il protocollo AWS JSON in Amazon SQS](sqs-making-api-requests-json.md).