# SubscriptionProps

Properties for creating a new subscription.

Extends: SubscriptionProps
Extends: SubscriptionOptions
Used as props by: 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#L86)

## Example

```ts
// producerStack defines an SNS topic
declare const topic: sns.Topic;

// consumerStack subscribes to it with a weak reference,
// so the producer can be torn down without blocking on this consumer
const consumerStack = new Stack(app, 'Consumer', {
  env: { account: '123456789012', region: 'us-east-1' },
});
new sns.Subscription(consumerStack, 'Subscription', {
  topic: sns.Topic.fromTopicArn(consumerStack, 'Topic', Stack.consumeReference(topic.topicArn)),
  endpoint: 'https://example.com/webhook',
  protocol: sns.SubscriptionProtocol.HTTPS,
});
```

## 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.

- `topic`: [ITopic](/cdk/api/v2/docs/aws-cdk-lib.aws_sns.ITopic.html) (required) — The topic to subscribe to.
