

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.

# Análisis de los formatos de mensajes de Amazon SNS
<a name="sns-message-and-json-formats"></a>

Cuando Amazon SNS envía mensajes a los HTTP/HTTPS puntos de enlace, estos contienen encabezados HTTP y un cuerpo de mensaje JSON. Estos mensajes siguen un formato estructurado que incluye metadatos como el tipo de mensaje, el ARN del tema, las marcas de tiempo y las firmas digitales. Al analizar correctamente los mensajes de Amazon SNS, puede determinar si un mensaje es una confirmación de suscripción, una notificación o una confirmación de cancelación de suscripción, extraer los datos relevantes y verificar la autenticidad mediante la validación de firmas.

# Encabezados de HTTP/HTTPS
<a name="http-header"></a>

Cuando Amazon SNS envía un mensaje de confirmación de suscripción, notificación o confirmación de cancelación de la suscripción a los HTTP/HTTPS puntos de conexión, envía un mensaje POST con varios valores de encabezado específicos de Amazon SNS. Puede utilizar los valores del encabezado para tareas como identificar el tipo de mensaje sin tener que analizar el cuerpo del mensaje JSON para leer el valor de `Type`. De forma predeterminada, Amazon SNS envía todas las notificaciones a puntos de conexión HTTP/S con `Content-Type` establecido a `text/plain; charset=UTF-8`. Para elegir `Content-Type` otro que no sea text/plain (predeterminado), consulte en. `headerContentType` [Crear una política HTTP/S de entrega](sns-message-delivery-retries.md#creating-delivery-policy)

**`x-amz-sns-message-type`**  
Tipo de mensaje. Los valores posibles son `SubscriptionConfirmation`, `Notification` y `UnsubscribeConfirmation`.

**`x-amz-sns-message-id`**  
Un identificador único universal (UUID), único para cada mensaje publicado. En las notificaciones que Amazon SNS reenvía durante un reintento, se usa el ID de mensaje original.

**`x-amz-sns-topic-arn`**  
Nombre de recurso de Amazon (ARN) del tema en el que se publicó el mensaje.

**`x-amz-sns-subscription-arn`**  
ARN de la suscripción a este punto de enlace.

El siguiente encabezado HTTP POST es un ejemplo de encabezado para un mensaje `Notification` a un punto de conexión HTTP.

```
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
```

# Formato JSON de confirmación de suscripción HTTP/HTTPS
<a name="http-subscription-confirmation-json"></a>

Tras suscribir un HTTP/HTTPS punto de conexión, Amazon SNS envía un mensaje de confirmación de suscripción al HTTP/HTTPS punto de conexión. Este mensaje contiene un valor `SubscribeURL` que debe visitar para confirmar la suscripción (o bien, puede utilizar el valor `Token` con [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)). 

**nota**  
Amazon SNS no envía notificaciones a este punto de conexión hasta que se confirma la suscripción

El mensaje de confirmación de la suscripción es un mensaje POST con un cuerpo que contiene un documento JSON con los siguientes pares de nombre-valor.

**`Type`**  
Tipo de mensaje. Para obtener una confirmación de suscripción, el tipo es `SubscriptionConfirmation`.

**`MessageId`**  
Un identificador único universal (UUID), único para cada mensaje publicado. En los mensajes que Amazon SNS reenvía durante un reintento, se usa el ID de mensaje original.

**`Token`**  
Un valor que puede utilizar con la acción [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html) para confirmar la suscripción. También puede visitar simplemente `SubscribeURL`.

**`TopicArn`**  
Nombre de recurso de Amazon (ARN) del tema al que está suscrito este punto de enlace.

**`Message`**  
Cadena que describe el mensaje. Para la confirmación de suscripción, esta cadena tiene el aspecto siguiente:  

```
You have chosen to subscribe to the topic arn:aws:sns:us-east-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.
```

**`SubscribeURL`**  
Dirección URL que debe visitar para confirmar la suscripción. O bien, puede utilizar `Token` con la acción [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html) para confirmar la suscripción.

**`Timestamp`**  
Hora (GMT) de envío de la confirmación de suscripción.

**`SignatureVersion`**  
Versión de la firma de Amazon SNS utilizada.  
+ Si `SignatureVersion` es **1**, `Signature` es una firma `SHA1withRSA` codificada en Base64 de los valores `Message`, `MessageId`, `Type`, `Timestamp` y `TopicArn`. 
+ Si `SignatureVersion` es **2**, `Signature` es una firma `SHA256withRSA` codificada en Base64 de los valores `Message`, `MessageId`, `Type`, `Timestamp` y `TopicArn`.

**`Signature`**  
Firma de `SHA1withRSA` o `SHA256withRSA` codificada en Base64 de los valores `Message`, `MessageId`, `Type`, `Timestamp` y `TopicArn`.

**`SigningCertURL`**  
Dirección URL del certificado que se utilizó para firmar el mensaje.

El mensaje HTTP POST siguiente es un ejemplo de un mensaje de `SubscriptionConfirmation` a un punto de conexión HTTP.

```
POST / HTTP/1.1
x-amz-sns-message-type: SubscriptionConfirmation
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent

{
  "Type" : "SubscriptionConfirmation",
  "MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b",
  "Token" : "2336412f37...",
  "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
  "Message" : "You have chosen to subscribe to the topic arn:aws:sns:us-west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.",
  "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37...",
  "Timestamp" : "2012-04-26T20:45:04.751Z",
  "SignatureVersion" : "1",
  "Signature" : "EXAMPLEpH+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH81mtnPk5uvvolIC1CXGu43obcgFxeL3khZl8IKvO61GWB6jI9b5+gLPoBc1Q=",
  "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem"
}
```

# Formato JSON de notificación HTTP/HTTPS
<a name="http-notification-json"></a>

Cuando Amazon SNS envía una notificación a un punto de enlace HTTP o HTTPS suscrito, el cuerpo del mensaje POST enviado al punto de enlace contiene un documento JSON con los siguientes pares de nombre-valor.

**`Type`**  
Tipo de mensaje. Para una notificación, el tipo es `Notification`.

**`MessageId`**  
Un identificador único universal (UUID), único para cada mensaje publicado. En las notificaciones que Amazon SNS reenvía durante un reintento, se usa el ID de mensaje original.

**`TopicArn`**  
Nombre de recurso de Amazon (ARN) del tema en el que se publicó el mensaje.

**`Subject`**  
Parámetro `Subject` especificado cuando se publicó la notificación en el tema.  
Se trata de un parámetro opcional. Si no se especifica `Subject`, el par de nombre y valor no aparecerá en este documento JSON.

**`Message`**  
Valor `Message` especificado cuando se publicó la notificación en el tema.

**`Timestamp`**  
Hora (GMT) de publicación de la notificación.

**`SignatureVersion`**  
Versión de la firma de Amazon SNS utilizada.  
+ Si `SignatureVersion` es **1**, `Signature` es una firma `SHA1withRSA` codificada en Base64 de los valores `Message`, `MessageId`, `Subject` ( si está presente), `Type`, `Timestamp` y `TopicArn`.
+ Si `SignatureVersion` es **2**, `Signature` es una firma `SHA256withRSA` codificada en Base64 de los valores `Message`, `MessageId`, `Subject` ( si está presente), `Type`, `Timestamp` y `TopicArn`.

**`Signature`**  
Firma de `SHA1withRSA` o `SHA256withRSA` codificada en Base64 de los valores `Message`, `MessageId`, `Subject` (si está presente), `Type`, `Timestamp` y `TopicArn`.

**`SigningCertURL`**  
Dirección URL del certificado que se utilizó para firmar el mensaje.

**`UnsubscribeURL`**  
Dirección URL que puede utilizar para cancelar la suscripción del punto de enlace a este tema. Si visita esta URL, Amazon SNS cancela la suscripción del punto de enlace y deja de enviarle notificaciones.

El mensaje HTTP POST siguiente es un ejemplo de un mensaje de `Notification` a un punto de conexión HTTP.

```
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96
Content-Length: 773
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent

{
  "Type" : "Notification",
  "MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324",
  "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
  "Subject" : "My First Message",
  "Message" : "Hello world!",
  "Timestamp" : "2012-05-02T00:54:06.655Z",
  "SignatureVersion" : "1",
  "Signature" : "EXAMPLEw6JRN...",
  "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
  "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96"
  }
```

# Formato JSON de confirmación de cancelación de suscripción HTTP/HTTPS
<a name="http-unsubscribe-confirmation-json"></a>

Cuando se cancela la suscripción de un HTTP/HTTPS punto final a un tema, Amazon SNS envía un mensaje de confirmación de cancelación de la suscripción al punto final.

El mensaje de cancelación de la suscripción es un mensaje POST con un cuerpo que contiene un documento JSON con los siguientes pares de nombre-valor.

**`Type`**  
Tipo de mensaje. Para obtener una confirmación de la cancelación de suscripción, el tipo es `UnsubscribeConfirmation`.

**`MessageId`**  
Un identificador único universal (UUID), único para cada mensaje publicado. En los mensajes que Amazon SNS reenvía durante un reintento, se usa el ID de mensaje original.

**`Token`**  
Valor que puede utilizar con la acción [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html) para volver a confirmar la suscripción. También puede visitar simplemente `SubscribeURL`.

**`TopicArn`**  
Nombre de recurso de Amazon (ARN) del tema del que el punto de enlace ha cancelado su suscripción.

**`Message`**  
Cadena que describe el mensaje. Para la confirmación de la cancelación de suscripción, esta cadena tiene el aspecto siguiente:  

```
You have chosen to deactivate subscription arn:aws:sns:us-east-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.
```

**`SubscribeURL`**  
Dirección URL que debe visitar para volver a confirmar la suscripción. O bien, puede utilizar `Token` con la acción [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html) para volver a confirmar la suscripción.

**`Timestamp`**  
Hora (GMT) de envío de la cancelación de la suscripción.

**`SignatureVersion`**  
Versión de la firma de Amazon SNS utilizada.  
+ Si `SignatureVersion` es **1**, `Signature` es una firma `SHA1withRSA` codificada en Base64 de los valores `Message`, `MessageId`, `Type`, `Timestamp` y `TopicArn`.
+ Si `SignatureVersion` es **2**, `Signature` es una firma `SHA256withRSA` codificada en Base64 de los valores `Message`, `MessageId`, `Type`, `Timestamp` y `TopicArn`.

**`Signature`**  
Firma de `SHA1withRSA` o `SHA256withRSA` codificada en Base64 de los valores `Message`, `MessageId`, `Type`, `Timestamp` y `TopicArn`.

**`SigningCertURL`**  
Dirección URL del certificado que se utilizó para firmar el mensaje.

El mensaje HTTP POST siguiente es un ejemplo de un mensaje de `UnsubscribeConfirmation` a un punto de conexión HTTP.

```
POST / HTTP/1.1
x-amz-sns-message-type: UnsubscribeConfirmation
x-amz-sns-message-id: 47138184-6831-46b8-8f7c-afc488602d7d
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
Content-Length: 1399
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent

{
  "Type" : "UnsubscribeConfirmation",
  "MessageId" : "47138184-6831-46b8-8f7c-afc488602d7d",
  "Token" : "2336412f37...",
  "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
  "Message" : "You have chosen to deactivate subscription arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.",
  "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb6...",
  "Timestamp" : "2012-04-26T20:06:41.581Z",
  "SignatureVersion" : "1",
  "Signature" : "EXAMPLEHXgJm...",
  "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem"
}
```

# SetSubscriptionAttributes política de entrega (formato JSON)
<a name="set-sub-attributes-delivery-policy-json"></a>

Si envía una solicitud a la acción `SetSubscriptionAttributes` y establece el parámetro `AttributeName` al valor `DeliveryPolicy`, el valor del parámetro `AttributeValue` válido debe ser un objeto JSON válido. Por ejemplo, el siguiente ejemplo establece la política de entrega en 5 reintentos en total.

```
http://sns.us-east-2.amazonaws.com/
?Action=SetSubscriptionAttributes
&SubscriptionArn=arn%3Aaws%3Asns%3Aus-east-2%3A123456789012%3AMy-Topic%3A80289ba6-0fd4-4079-afb4-ce8c8260f0ca
&AttributeName=DeliveryPolicy
&AttributeValue={"healthyRetryPolicy":{"numRetries":5}}
...
```

Utilice el siguiente formato JSON para el valor del parámetro `AttributeValue`.

```
{
    "healthyRetryPolicy" : {
        "minDelayTarget" :  int,
        "maxDelayTarget" : int,
        "numRetries" : int,
        "numMaxDelayRetries" : int,
        "backoffFunction" : "linear|arithmetic|geometric|exponential"
    },
    "throttlePolicy" : {
        "maxReceivesPerSecond" : int
    },
    "requestPolicy" : {
        "headerContentType" : "text/plain | application/json | application/xml"
    }
}
```

Para obtener más información sobre la `SetSubscriptionAttribute` acción, consulta la *referencia [SetSubscriptionAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html)de la API de Amazon Simple Notification Service*. Para obtener más información sobre los encabezados content-type de HTTP compatibles, consulte [Crear una política HTTP/S de entrega](sns-message-delivery-retries.md#creating-delivery-policy).

# SetTopicAttributes política de entrega (formato JSON)
<a name="set-topic-attributes-delivery-policy-json"></a>

Si envía una solicitud a la acción `SetTopicAttributes` y establece el parámetro `AttributeName` al valor `DeliveryPolicy`, el valor del parámetro `AttributeValue` válido debe ser un objeto JSON válido. Por ejemplo, el siguiente ejemplo establece la política de entrega en 5 reintentos en total.

```
http://sns.us-east-2.amazonaws.com/
?Action=SetTopicAttributes
&TopicArn=arn%3Aaws%3Asns%3Aus-east-2%3A123456789012%3AMy-Topic
&AttributeName=DeliveryPolicy
&AttributeValue={"http":{"defaultHealthyRetryPolicy":{"numRetries":5}}}
...
```

Utilice el siguiente formato JSON para el valor del parámetro `AttributeValue`.

```
{
    "http" : {
        "defaultHealthyRetryPolicy" : {
            "minDelayTarget":  int,
            "maxDelayTarget": int,
            "numRetries": int,
            "numMaxDelayRetries": int,
            "backoffFunction": "linear|arithmetic|geometric|exponential"
        },
        "disableSubscriptionOverrides" : Boolean,
        "defaultThrottlePolicy" : {
            "maxReceivesPerSecond" : int
        },
        "defaultRequestPolicy" : {
            "headerContentType" : "text/plain | application/json | application/xml"
        }
    }
}
```

Para obtener más información sobre la `SetTopicAttribute` acción, consulta la *referencia [SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)de la API de Amazon Simple Notification Service*. Para obtener más información sobre los encabezados content-type de HTTP compatibles, consulte [Crear una política HTTP/S de entrega](sns-message-delivery-retries.md#creating-delivery-policy).