

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Realizar solicitudes de API de consulta mediante el protocolo AWS JSON en Amazon SQS
<a name="sqs-making-api-requests-json"></a>

En este tema se explica cómo crear un punto de conexión de Amazon SQS, realizar solicitudes POST e interpretar las respuestas.

**nota**  
AWS El protocolo JSON es compatible con la mayoría de las variantes de idioma. Para ver una lista completa de las variantes de lenguaje admitidas, consulte [¿Qué idiomas son compatibles con el protocolo AWS JSON que se utiliza en Amazon SQS? APIs](sqs-json-faqs.md#json-protocol-supported-languages).

## Construcción de un punto de enlace
<a name="sqs-api-constructing-endpoints-json"></a>

Para trabajar con colas de Amazon SQS, debe crear un punto de conexión. Para obtener información sobre los puntos de conexión de Amazon SQS, consulte las páginas siguientes en *Referencia general de Amazon Web Services*:
+ [Puntos de conexión regionales](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)
+ [Puntos de conexión y cuotas de Amazon Simple Queue Service](https://docs.aws.amazon.com/general/latest/gr/sqs-service)

Cada punto de conexión de Amazon SQS es independiente. Por ejemplo, si dos colas se denominan *MyQueue* y una tiene el punto de enlace `sqs.us-east-2.amazonaws.com` mientras que la otra tiene el punto de enlace `sqs.eu-west-2.amazonaws.com`, no comparten ningún dato entre ellas.

A continuación, se muestra un ejemplo de un punto de conexión que realiza una solicitud para crear una cola. 

```
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**  
Los nombres de las colas y las colas URLs distinguen mayúsculas de minúsculas.  
La estructura de *`AUTHPARAMS`* depende de la firma de la solicitud de API. Para obtener más información, consulte [Firmar solicitudes de AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) en la *Referencia general de Amazon Web Services*.

## Realizar una solicitud POST
<a name="structure-post-request"></a>

Las solicitudes POST de Amazon SQS envían parámetros de consulta como un formulario en el cuerpo de una solicitud HTTP.

A continuación, se muestra un ejemplo de un encabezado HTTP con `X-Amz-Target` establecido a `AmazonSQS.<operationName>` y de un encabezado HTTP con `Content-Type` establecido a `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"
}
```

Esta solicitud HTTP POST envía un mensaje a una cola de Amazon SQS.

**nota**  
Ambos encabezados HTTP `X-Amz-Target` y `Content-Type` son obligatorios.  
El cliente HTTP puede añadir otros elementos a la solicitud HTTP, según la versión de HTTP del cliente.

# Interpretación de las respuestas de la API JSON de Amazon SQS
<a name="sqs-json-api-responses"></a>

Cuando envía una solicitud a Amazon SQS, devuelve una respuesta JSON con los resultados. La estructura de la respuesta depende de la acción de la API que haya utilizado.

Para obtener más información sobre estas respuestas, consulte:
+ La acción específica de la API en las [acciones de la API](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Operations.html) de la *Referencia de la API de Amazon Simple Queue Service*
+ la [Protocolo Amazon SQS JSON AWS FAQs](sqs-json-faqs.md),

## Estructura de una respuesta JSON correcta
<a name="sqs-json-api-successful-response-structure"></a>

Si la solicitud se realiza correctamente, el elemento de respuesta principal es `x-amzn-RequestId`, que contiene el identificador único universal (UUID) de la solicitud, así como otros campos de respuesta añadidos. Por ejemplo, la siguiente respuesta [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) contiene el campo `QueueUrl` que, a su vez, contiene la URL de la cola creada.

```
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"
}
```

## Estructura de una respuesta de error JSON
<a name="sqs-api-error-response-structure"></a>

Si una solicitud no se realiza correctamente, Amazon SQS devuelve la respuesta principal, incluidos el encabezado HTTP y el cuerpo.

En el encabezado HTTP, `x-amzn-RequestId` contiene el UUID de la solicitud. `x-amzn-query-error` contiene dos informaciones: el tipo de error y si se trata de un error del productor o del consumidor. 

En el cuerpo de la respuesta, `"__type"` indica otros detalles del error y `Message` señala la condición del error en un formato legible. 

El siguiente es un ejemplo de respuesta de error en 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."
}
```

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

En este tema se tratan las preguntas más frecuentes sobre el uso del protocolo AWS JSON con Amazon SQS.

## ¿Qué es el protocolo AWS JSON y en qué se diferencia de las solicitudes y respuestas de la API Amazon SQS existentes?
<a name="json-protocol-what-is"></a>

JSON es uno de los métodos de conexión más utilizados y aceptados para la comunicación entre sistemas heterogéneos. Amazon SQS utiliza JSON como medio de comunicación entre un cliente AWS del SDK (por ejemplo, Java, Python, Golang JavaScript) y el servidor Amazon SQS. Una solicitud HTTP de una operación de la API de Amazon SQS acepta entradas en formato JSON. La operación de Amazon SQS se ejecuta y la respuesta de la ejecución se comparte de nuevo con el cliente del SDK en formato JSON. En comparación con las consultas de AWS , JSON es más eficiente a la hora de transportar datos entre el cliente y el servidor. 
+ El protocolo Amazon SQS AWS JSON actúa como mediador entre el cliente y el servidor de Amazon SQS.
+ El servidor no entiende el lenguaje de programación en el que se crea la operación de Amazon SQS, pero entiende el protocolo AWS JSON.
+ El protocolo Amazon SQS AWS JSON utiliza la serialización (convierte el objeto a formato JSON) y la deserialización (convierte el formato JSON en objeto) entre el cliente y el servidor de Amazon SQS.

## ¿Cómo puedo empezar a utilizar los protocolos AWS JSON para Amazon SQS?
<a name="json-protocol-getting-started"></a>

Para empezar a utilizar la última versión del AWS SDK y lograr una mensajería más rápida para Amazon SQS, actualice el AWS SDK a la versión especificada o a cualquier versión posterior. Para obtener más información sobre los clientes del SDK, consulte la columna Guía de la tabla siguiente.

La siguiente es una lista de las versiones del SDK en todas las variantes de idioma del protocolo AWS JSON para su uso con Amazon SQS: APIs


| Idioma | Repositorio de clientes del SDK | Versión de cliente del SDK requerida | Guía | 
| --- | --- | --- | --- | 
|  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 para 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 para 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 para 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 para Java](https://aws.amazon.com/sdk-for-java/)  | 
|  Java 2.x  |  [aws/ 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 para Java](https://aws.amazon.com/sdk-for-java/)  | 
|  JavaScript v2.x  |  [aws/ aws-sdk-js](https://github.com/aws/aws-sdk-js)  |  [JavaScript en 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 en AWS](https://aws.amazon.com/developer/language/javascript/)  | 
|  .NET  |  [aws/ aws-sdk-net](https://github.com/aws/aws-sdk-net)  |  [3.7.681.0](https://github.com/aws/aws-sdk-net/releases/tag/3.7.681.0)  |  [AWS SDK para .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 para 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 para 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 para Python (Boto3)](https://aws.amazon.com/sdk-for-python/)  | 
|  awscli  |  [CLI de AWS](https://github.com/aws/aws-cli)  |  [1.29.82](https://github.com/aws/aws-cli/releases/tag/1.29.82)  |  [Interfaz de la línea de comandos de AWS](https://aws.amazon.com/cli/)  | 
|  Ruby  |  [aws/ 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 para Ruby](https://aws.amazon.com/sdk-for-ruby/)  | 

## ¿Cuáles son los riesgos de habilitar el protocolo JSON para mis cargas de trabajo de Amazon SQS?
<a name="json-protocol-risks"></a>

Si utiliza una implementación personalizada del AWS SDK o una combinación de clientes personalizados y un AWS SDK para interactuar con Amazon SQS que genera respuestas basadas en AWS consultas (también conocidas como basadas en XML), es posible que no sea compatible con el protocolo JSON. AWS Si tiene algún problema, póngase en contacto con AWS Support.

## ¿Qué sucede si ya tengo la última versión del AWS SDK, pero mi solución de código abierto no es compatible con JSON?
<a name="json-protocol-sdk-version-open-source"></a>

Debe cambiar la versión del SDK por la anterior a la que esté utilizando. Consulte [¿Cómo puedo empezar a utilizar los protocolos AWS JSON para Amazon SQS?](#json-protocol-getting-started) para obtener más información. AWS Las versiones del SDK que aparecen en [¿Cómo puedo empezar a utilizar los protocolos AWS JSON para Amazon SQS?](#json-protocol-getting-started) utilizan el protocolo JSON wire para Amazon SQS APIs. Si cambia el AWS SDK a la versión anterior, Amazon SQS APIs utilizará la AWS consulta.

## ¿Qué idiomas son compatibles con el protocolo AWS JSON que se utiliza en Amazon SQS? APIs
<a name="json-protocol-supported-languages"></a>

Amazon SQS admite todas las variantes de idioma en las que AWS SDKs estén disponibles de forma general (GA). Actualmente, no se admite Kotlin, Rust ni Swift. Para obtener más información sobre otras variantes de lenguaje, consulte [Herramientas para crear en AWS](https://aws.amazon.com/developer/tools/).

## ¿Qué regiones son compatibles con el protocolo AWS JSON utilizado en Amazon SQS? APIs
<a name="json-protocol-supported-regions"></a>

Amazon SQS admite el protocolo AWS JSON en todas [AWS las regiones](https://docs.aws.amazon.com/general/latest/gr/sqs-service.html) en las que Amazon SQS está disponible. 

## ¿Qué mejoras de latencia puedo esperar al actualizar a las versiones de AWS SDK especificadas para Amazon SQS mediante el protocolo AWS JSON?
<a name="json-protocol-upgrading-sdk"></a>

AWS El protocolo JSON es más eficiente en la serialización y deserialización de solicitudes y respuestas en comparación con el protocolo de consultas. AWS Según las pruebas de AWS rendimiento para una carga útil de mensajes de 5 KB, el protocolo JSON para Amazon SQS end-to-end reduce la latencia del procesamiento de mensajes hasta un 23% y reduce el uso de CPU y memoria del lado del cliente de la aplicación. 

## ¿Quedará AWS obsoleto el protocolo de consultas?
<a name="query-protocol"></a>

AWS el protocolo de consulta seguirá siendo compatible. Puede seguir utilizando el protocolo de AWS consultas siempre que la versión AWS del SDK esté configurada en una versión anterior distinta de la que se indica en [Cómo empezar con los protocolos AWS JSON para Amazon SQS](#json-protocol-getting-started).

## ¿Dónde puedo encontrar más información sobre el protocolo AWS JSON?
<a name="json-protocol-more-info"></a>

Puede encontrar más información sobre el protocolo JSON en [Protocolo AWS JSON 1.0](https://smithy.io/2.0/aws/protocols/aws-json-1_0-protocol.html) en la documentación de *Smithy*. Para obtener más información sobre las solicitudes de la API de Amazon SQS mediante el protocolo AWS JSON, consulte [Realizar solicitudes de API de consulta mediante el protocolo AWS JSON en Amazon SQS](sqs-making-api-requests-json.md).