# SubscriptionOptions

Options for creating a new subscription.

- Source: [`aws-sns/lib/subscription.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/aws-sns/lib/subscription.ts#L17)
- Type last changed: v2.169.0 · 21 Nov 2024

## Example

```ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import * as cdk from 'aws-cdk-lib';
import { aws_sns as sns } from 'aws-cdk-lib';
import { aws_sqs as sqs } from 'aws-cdk-lib';

declare const filterOrPolicy: sns.FilterOrPolicy;
declare const queue: sqs.Queue;
declare const subscriptionFilter: sns.SubscriptionFilter;
const subscriptionOptions: sns.SubscriptionOptions = {
  endpoint: 'endpoint',
  protocol: sns.SubscriptionProtocol.HTTP,

  // the properties below are optional
  deadLetterQueue: queue,
  deliveryPolicy: {
    healthyRetryPolicy: {
      backoffFunction: sns.BackoffFunction.ARITHMETIC,
      maxDelayTarget: cdk.Duration.minutes(30),
      minDelayTarget: cdk.Duration.minutes(30),
      numMaxDelayRetries: 123,
      numMinDelayRetries: 123,
      numNoDelayRetries: 123,
      numRetries: 123,
    },
    requestPolicy: {
      headerContentType: 'headerContentType',
    },
    throttlePolicy: {
      maxReceivesPerSecond: 123,
    },
  },
  filterPolicy: {
    filterPolicyKey: subscriptionFilter,
  },
  filterPolicyWithMessageBody: {
    filterPolicyWithMessageBodyKey: filterOrPolicy,
  },
  rawMessageDelivery: false,
  region: 'region',
  subscriptionRoleArn: 'subscriptionRoleArn',
};
```

## Properties

- `deadLetterQueue`: [IQueue](/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.IQueue.html) — Queue to be used as dead letter queue.

  **Default:** No dead letter queue enabled.

  If not passed no dead letter queue is enabled.

- `deliveryPolicy`: [DeliveryPolicy](/cdk/api/v2/docs/aws-cdk-lib.aws_sns.DeliveryPolicy.html) — The delivery policy.

  **Default:** if the initial delivery of the message fails, three retries with a delay between failed attempts set at 20 seconds

- `endpoint`: string (required) — The subscription endpoint.

  The meaning of this value depends on the value for 'protocol'.

- `filterPolicy`: { [key: string]: [SubscriptionFilter](/cdk/api/v2/docs/aws-cdk-lib.aws_sns.SubscriptionFilter.html) } — The filter policy.

  **Default:** all messages are delivered

- `filterPolicyWithMessageBody`: { [key: string]: [FilterOrPolicy](/cdk/api/v2/docs/aws-cdk-lib.aws_sns.FilterOrPolicy.html) } — The filter policy that is applied on the message body.

  **Default:** all messages are delivered

  To apply a filter policy to the message attributes, use `filterPolicy`. A maximum of one of `filterPolicyWithMessageBody` and `filterPolicy` may be used.

- `protocol`: [SubscriptionProtocol](/cdk/api/v2/docs/aws-cdk-lib.aws_sns.SubscriptionProtocol.html) (required) — What type of subscription to add.

- `rawMessageDelivery`: boolean = false — true if raw message delivery is enabled for the subscription.

  Raw messages are free of JSON formatting and can be
  sent to HTTP/S and Amazon SQS endpoints. For more information, see GetSubscriptionAttributes in the Amazon Simple
  Notification Service API Reference.

- `region`: string — The region where the topic resides, in the case of cross-region subscriptions.

  **Default:** the region where the CloudFormation stack is being deployed.

- `subscriptionRoleArn`: string — Arn of role allowing access to firehose delivery stream.

  **Default:** No subscription role is provided

  Required for a firehose subscription protocol.
