es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AWS SQS – CDK – cómo crear un filtro de tema

Soy capaz de crear una cola de SQS + una función lambda y conectarlos a través de un desencadenador/suscripción.

¿Cómo puedo crear un filtro de tema mediante CDK?

Soy capaz de crear el tema, la función lambda y el desencadenador/suscripción de la siguiente manera:

const queue = new sqs.Queue(this, 'OurSqsQueue', {
  queueName: 'OurSQSQueue',
});
const lambdaFunction = new lambda.Function(this,'test', {
       code: lambda.Code.fromAsset('src'),
       handler: index.lambdaHandler,
       functionName: 'test',
       runtime: lambda.Runtime.NODEJS_14_X,
     });

const eventSource = new lambdaEventSources.SqsEventSource(queue);
lambdaFunction.addEventSource(eventSource);

Según la documentación, el suscriptor de un tema de Amazon SQS recibe todos los mensajes publicados en el tema. Para recibir un subconjunto de los mensajes, un suscriptor debe asignar una política de filtro a la suscripción del tema.

Imagen

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para crear un filtro de temas a través de CDK, primero necesitas crear un objeto de política de filtro de suscripción. Esta política de filtro especifica los criterios para filtrar los mensajes enviados a la suscripción.

    Aquí tienes un ejemplo de cómo crear una política de filtro de suscripción:

    const filterPolicy = {
    color: sns.SubscriptionFilter.stringFilter({
    whitelist: ['rojo', 'verde', 'azul']
    }),
    precio: sns.SubscriptionFilter.numericFilter({
    between: [100,200]
    })
    };

    En este ejemplo, estamos creando una política de filtro que filtra los mensajes según sus atributos de color y precio. El atributo de color debe ser uno de los valores “rojo”, “verde” o “azul”, mientras que el atributo de precio debe estar entre 100 y 200.

    Una vez que hayas creado tu política de filtro, puedes usarla al crear tu suscripción al tema de SNS de la siguiente manera:

    “` const topic = new sns.Topic(this, ‘MyTopic’, {
    displayName: ‘MyTopic’
    });

    const subscription = new sns.Subscription(this, ‘MySubscription’, {
    protocol: sns.SubscriptionProtocol.LAMBDA,
    topic: topic,
    endpoint: lambdaFunction.functionArn,
    filterPolicy: filterPolicy
    }); “`

    En este ejemplo, estamos creando un tema de SNS y una suscripción a ese tema. La suscripción está configurada para enviar mensajes a la función Lambda que creamos anteriormente, y también incluye la política de filtro que creamos anteriormente.

    Con estas adiciones a tu código, deberías poder crear un tema y una suscripción de SNS con una política de filtro utilizando AWS CDK.

Comments are closed.