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.
Aplicar una política de filtros de suscripciones en Amazon SNS
El filtrado de mensajes en Amazon te SNS permite entregar mensajes a los suscriptores de forma selectiva en función de las políticas de filtrado. Estas políticas definen las condiciones que deben cumplir los mensajes para poder entregarse a una suscripción. Si bien la entrega de mensajes sin procesar es una opción que puede afectar al procesamiento de los mensajes, no es necesaria para que los filtros de suscripción funcionen.
Puedes aplicar una política de filtrado a una SNS suscripción de Amazon mediante la SNS consola de Amazon. O bien, para aplicar las políticas de forma programática, puedes usar Amazon SNSAPI, AWS Command Line Interface (AWS CLI) o cualquiera AWS SDK que sea compatible con Amazon. SNS También puedes usar. AWS CloudFormation
Habilitar la entrega de mensajes sin procesar
La entrega de mensajes sin procesar garantiza que las cargas útiles de los mensajes se entreguen tal cual a los suscriptores sin necesidad de codificación ni transformación adicionales. Esto puede resultar útil cuando los suscriptores necesitan el formato de mensaje original para su procesamiento. Sin embargo, la entrega de mensajes sin procesar no está directamente relacionada con la funcionalidad de los filtros de suscripción.
Aplicar filtros de suscripción
Para aplicar filtros de mensajes a una suscripción, defina una política de filtrado mediante la JSON sintaxis. Esta política especifica las condiciones que debe cumplir un mensaje para entregarse a la suscripción. Los filtros se pueden basar en los atributos del mensaje, como los atributos del mensaje, la estructura del mensaje o incluso el contenido del mensaje.
Relación entre la entrega de mensajes sin procesar y los filtros de suscripción
Si bien habilitar la entrega de mensajes sin procesar puede afectar a la forma en que los suscriptores entregan y procesan los mensajes, no es un requisito previo para usar filtros de suscripción. Sin embargo, en situaciones en las que los suscriptores requieren el formato de mensaje original sin ninguna modificación, habilitar la entrega de mensajes sin procesar podría resultar beneficioso junto con los filtros de suscripción.
Consideraciones para un filtrado eficaz
Al implementar el filtrado de mensajes, tenga en cuenta los requisitos específicos de su aplicación y de sus suscriptores. Defina políticas de filtrado que coincidan con precisión con los criterios de entrega de mensajes para garantizar una distribución eficiente y específica de los mensajes.
importante
AWS servicios como IAM Amazon SNS utilizan un modelo de computación distribuida llamado consistencia eventual. Los añadidos o cambios a una política de filtro de suscripción pueden tardar hasta 15 minutos en tener efecto.
AWS Management Console
Inicia sesión en la SNSconsola de Amazon
. -
En el panel de navegación, seleccione Subscriptions (Suscripciones).
-
Seleccione una suscripción y, a continuación, elija Edit (Editar).
-
En la página Edit (Editar), amplíe la sección Subscription filter policy (Política de filtro de suscripción).
-
Elija entre el filtrado basado en atributos o el filtrado basado en cargas.
-
En el campo del JSONeditor, proporciona el JSONcuerpo de tu política de filtros.
-
Elija Guardar cambios.
Amazon SNS aplica tu política de filtros a la suscripción.
AWS CLI
Para aplicar una política de filtrado con AWS Command Line Interface (AWS CLI), utilice el set-subscription-attributes
comando, tal y como se muestra en el siguiente ejemplo. Para la opción --attribute-name
, especifique FilterPolicy
. Para--attribute-value
, especifique su JSONpolítica.
$
aws sns set-subscription-attributes --subscription-arn
arn:aws:sns: ...
--attribute-name FilterPolicy --attribute-value'{"store":["example_corp"],"event":["order_placed"]}'
Para que su política sea válidaJSON, escriba los nombres y valores de los atributos entre comillas dobles. Incluya también todo el argumento de la política entre comillas. Para evitar el escape entre comillas, puede utilizar comillas simples para encerrar la política y comillas dobles para incluir los JSON nombres y valores, como se muestra en el ejemplo anterior.
Si quieres cambiar de un filtrado de mensajes basado en atributos (predeterminado) a uno basado en cargas útiles, también puedes usar el comando. set-subscription-attributes Para la opción --attribute-name
, especifique FilterPolicyScope
. En --attribute-value
, especifique MessageBody
.
$
aws sns set-subscription-attributes --subscription-arn arn:aws:sns: ... --attribute-name FilterPolicyScope --attribute-value MessageBody
Para verificar que su política de filtro se ha aplicado, utilice el comando get-subscription-attributes
. Los atributos del resultado deben mostrar la política de filtro para la clave FilterPolicy
, tal y como se muestra en el ejemplo siguiente:
$
aws sns get-subscription-attributes --subscription-arn arn:aws:sns: ...
{
"Attributes": {
"Endpoint": "endpoint . . .",
"Protocol": "https",
"RawMessageDelivery": "false",
"EffectiveDeliveryPolicy": "delivery policy . . .",
"ConfirmationWasAuthenticated": "true",
"FilterPolicy": "{\"store\": [\"example_corp\"], \"event\": [\"order_placed\"]}",
"FilterPolicyScope": "MessageAttributes",
"Owner": "111122223333",
"SubscriptionArn": "arn:aws:sns: . . .",
"TopicArn": "arn:aws:sns: . . ."
}
}
AWS SDKs
En los siguientes ejemplos de código, se muestra cómo utilizar SetSubscriptionAttributes
.
importante
Si está utilizando el ejemplo SDK para Java 2.x, la clase no SNSMessageFilterPolicy
está disponible de fábrica. Para obtener instrucciones sobre cómo instalar esta clase, consulte el ejemplo
Amazon SNS API
Para aplicar una política de filtrado con Amazon SNSAPI, haz una solicitud a la SetSubscriptionAttributes
acción. Defina el AttributeName
parámetro en y establezca el AttributeValue
parámetro en su política de filtradoJSON. FilterPolicy
Si quiere cambiar de filtrado de mensajes basado en atributos (predeterminado) a filtrado de mensajes basado en cargas, puede usar también la acción SetSubscriptionAttributes
. Establezca el parámetro AttributeName
en FilterPolicyScope
y el parámetro AttributeValue
en MessageBody
.
AWS CloudFormation
Para aplicar una política de filtrado AWS CloudFormation, utilice una YAML plantilla JSON o para crear una AWS CloudFormation
pila. Para obtener más información, consulte la FilterPolicy
propiedad del AWS::SNS::Subscription
recurso en la Guía del AWS CloudFormation usuario y en la AWS CloudFormation plantilla de ejemplo
-
Inicie sesión en la consola de AWS CloudFormation
. -
Elija Crear pila.
-
En la página Select Template (Seleccionar plantilla), elija Upload a template to Amazon S3 (Cargar una plantilla en Amazon S3), elija el archivo y, a continuación, elija Next (Siguiente).
-
En la página Specify Details (Especificar detalles), haga lo siguiente:
-
Para Stack Name (Nombre de la pila), escriba
MyFilterPolicyStack
. -
Para myHttpEndpoint, escriba el HTTP punto final al que se va a suscribir al tema.
sugerencia
Si no tiene un HTTP punto final, cree uno.
-
-
En la página Opciones, seleccione Siguiente.
-
En la página Review (Revisar), elija Create (Crear).