# SubscriptionFilter

A subscription filter for an attribute.

- Source: [`aws-sns/lib/subscription-filter.ts`](https://github.com/aws/aws-cdk/blob/v2.273.0/packages/aws-cdk-lib/aws-sns/lib/subscription-filter.ts#L129)
- Type last changed: v2.214.0 · 2 Sep 2025

## Example

```ts
import * as lambda from 'aws-cdk-lib/aws-lambda';

const myTopic = new sns.Topic(this, 'MyTopic');
declare const fn: lambda.Function;

// Lambda should receive only message matching the following conditions on attributes:
// color: 'red' or 'orange' or begins with 'bl'
// size: anything but 'small' or 'medium'
// price: between 100 and 200 or greater than 300
// store: attribute must be present
myTopic.addSubscription(new subscriptions.LambdaSubscription(fn, {
  filterPolicy: {
    color: sns.SubscriptionFilter.stringFilter({
      allowlist: ['red', 'orange'],
      matchPrefixes: ['bl'],
      matchSuffixes: ['ue'],
    }),
    size: sns.SubscriptionFilter.stringFilter({
      denylist: ['small', 'medium'],
    }),
    price: sns.SubscriptionFilter.numericFilter({
      between: { start: 100, stop: 200 },
      greaterThan: 300,
    }),
    store: sns.SubscriptionFilter.existsFilter(),
  },
}));
```

## Initializer

```ts
new SubscriptionFilter(conditions?: any[])
```

## Properties

- `conditions`: any[] (required) — conditions that specify the message attributes that should be included, excluded, matched, etc.

## Methods

- `existsFilter(): SubscriptionFilter // chainable` (static) — Returns a subscription filter for attribute key matching.

- `notExistsFilter(): SubscriptionFilter // chainable` (static) — Returns a subscription filter for absence of attribute key.

- `numericFilter(numericConditions: NumericConditions): SubscriptionFilter // chainable` (static) — Returns a subscription filter for a numeric attribute.

- `stringFilter(stringConditions: StringConditions): SubscriptionFilter // chainable` (static) — Returns a subscription filter for a string attribute.
