Class: AWSCDK::SNS::TopicSubscriptionConfig

Inherits:
SubscriptionOptions
  • Object
show all
Defined in:
sns/topic_subscription_config.rb

Overview

Subscription configuration.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(endpoint:, protocol:, dead_letter_queue: nil, delivery_policy: nil, filter_policy: nil, filter_policy_with_message_body: nil, raw_message_delivery: nil, region: nil, subscription_role_arn: nil, subscriber_id:, subscriber_scope: nil, subscription_dependency: nil) ⇒ TopicSubscriptionConfig

Returns a new instance of TopicSubscriptionConfig.

Parameters:

  • endpoint (String)

    The subscription endpoint.

  • protocol (AWSCDK::SNS::SubscriptionProtocol)

    What type of subscription to add.

  • dead_letter_queue (AWSCDK::SQS::IQueue, nil) (defaults to: nil)

    Queue to be used as dead letter queue.

  • delivery_policy (AWSCDK::SNS::DeliveryPolicy, nil) (defaults to: nil)

    The delivery policy.

  • filter_policy (Hash{String => AWSCDK::SNS::SubscriptionFilter}, nil) (defaults to: nil)

    The filter policy.

  • filter_policy_with_message_body (Hash{String => AWSCDK::SNS::FilterOrPolicy}, nil) (defaults to: nil)

    The filter policy that is applied on the message body.

  • raw_message_delivery (Boolean, nil) (defaults to: nil)

    true if raw message delivery is enabled for the subscription.

  • region (String, nil) (defaults to: nil)

    The region where the topic resides, in the case of cross-region subscriptions.

  • subscription_role_arn (String, nil) (defaults to: nil)

    Arn of role allowing access to firehose delivery stream.

  • subscriber_id (String)

    The id of the SNS subscription resource created under scope.

  • subscriber_scope (Constructs::Construct, nil) (defaults to: nil)

    The scope in which to create the SNS subscription resource.

  • subscription_dependency (Constructs::IDependable, nil) (defaults to: nil)

    The resources that need to be created before the subscription can be safely created.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'sns/topic_subscription_config.rb', line 19

def initialize(endpoint:, protocol:, dead_letter_queue: nil, delivery_policy: nil, filter_policy: nil, filter_policy_with_message_body: nil, raw_message_delivery: nil, region: nil, subscription_role_arn: nil, subscriber_id:, subscriber_scope: nil, subscription_dependency: nil)
  @endpoint = endpoint
  Jsii::Type.check_type(@endpoint, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "endpoint")
  @protocol = protocol
  Jsii::Type.check_type(@protocol, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3Nfc25zLlN1YnNjcmlwdGlvblByb3RvY29sIn0=")), "protocol")
  @dead_letter_queue = dead_letter_queue
  Jsii::Type.check_type(@dead_letter_queue, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3Nfc3FzLklRdWV1ZSJ9")), "deadLetterQueue") unless @dead_letter_queue.nil?
  @delivery_policy = delivery_policy.is_a?(Hash) ? ::AWSCDK::SNS::DeliveryPolicy.new(**delivery_policy.transform_keys(&:to_sym)) : delivery_policy
  Jsii::Type.check_type(@delivery_policy, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3Nfc25zLkRlbGl2ZXJ5UG9saWN5In0=")), "deliveryPolicy") unless @delivery_policy.nil?
  @filter_policy = filter_policy
  Jsii::Type.check_type(@filter_policy, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7ImZxbiI6ImF3cy1jZGstbGliLmF3c19zbnMuU3Vic2NyaXB0aW9uRmlsdGVyIn0sImtpbmQiOiJtYXAifX0=")), "filterPolicy") unless @filter_policy.nil?
  @filter_policy_with_message_body = filter_policy_with_message_body
  Jsii::Type.check_type(@filter_policy_with_message_body, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7ImZxbiI6ImF3cy1jZGstbGliLmF3c19zbnMuRmlsdGVyT3JQb2xpY3kifSwia2luZCI6Im1hcCJ9fQ==")), "filterPolicyWithMessageBody") unless @filter_policy_with_message_body.nil?
  @raw_message_delivery = raw_message_delivery
  Jsii::Type.check_type(@raw_message_delivery, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJib29sZWFuIn0=")), "rawMessageDelivery") unless @raw_message_delivery.nil?
  @region = region
  Jsii::Type.check_type(@region, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "region") unless @region.nil?
  @subscription_role_arn = subscription_role_arn
  Jsii::Type.check_type(@subscription_role_arn, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "subscriptionRoleArn") unless @subscription_role_arn.nil?
  @subscriber_id = subscriber_id
  Jsii::Type.check_type(@subscriber_id, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "subscriberId")
  @subscriber_scope = subscriber_scope
  Jsii::Type.check_type(@subscriber_scope, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJjb25zdHJ1Y3RzLkNvbnN0cnVjdCJ9")), "subscriberScope") unless @subscriber_scope.nil?
  @subscription_dependency = subscription_dependency
  Jsii::Type.check_type(@subscription_dependency, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJjb25zdHJ1Y3RzLklEZXBlbmRhYmxlIn0=")), "subscriptionDependency") unless @subscription_dependency.nil?
end

Instance Attribute Details

#dead_letter_queueAWSCDK::SQS::IQueue? (readonly)

Note:

Default: - No dead letter queue enabled.

Queue to be used as dead letter queue.

If not passed no dead letter queue is enabled.

Returns:



62
63
64
# File 'sns/topic_subscription_config.rb', line 62

def dead_letter_queue
  @dead_letter_queue
end

#delivery_policyAWSCDK::SNS::DeliveryPolicy? (readonly)

Note:

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

The delivery policy.

Returns:



67
68
69
# File 'sns/topic_subscription_config.rb', line 67

def delivery_policy
  @delivery_policy
end

#endpointString (readonly)

The subscription endpoint.

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

Returns:

  • (String)


51
52
53
# File 'sns/topic_subscription_config.rb', line 51

def endpoint
  @endpoint
end

#filter_policyHash{String => AWSCDK::SNS::SubscriptionFilter}? (readonly)

Note:

Default: - all messages are delivered

The filter policy.

Returns:



72
73
74
# File 'sns/topic_subscription_config.rb', line 72

def filter_policy
  @filter_policy
end

#filter_policy_with_message_bodyHash{String => AWSCDK::SNS::FilterOrPolicy}? (readonly)

Note:

Default: - all messages are delivered

The filter policy that is applied on the message body.

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

Returns:



79
80
81
# File 'sns/topic_subscription_config.rb', line 79

def filter_policy_with_message_body
  @filter_policy_with_message_body
end

#protocolAWSCDK::SNS::SubscriptionProtocol (readonly)

What type of subscription to add.



55
56
57
# File 'sns/topic_subscription_config.rb', line 55

def protocol
  @protocol
end

#raw_message_deliveryBoolean? (readonly)

Note:

Default: 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.

Returns:

  • (Boolean, nil)


88
89
90
# File 'sns/topic_subscription_config.rb', line 88

def raw_message_delivery
  @raw_message_delivery
end

#regionString? (readonly)

Note:

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

The region where the topic resides, in the case of cross-region subscriptions.

Returns:

  • (String, nil)


93
94
95
# File 'sns/topic_subscription_config.rb', line 93

def region
  @region
end

#subscriber_idString (readonly)

The id of the SNS subscription resource created under scope.

In most cases, it is recommended to use the unique_id of the topic you are subscribing to.

Returns:

  • (String)


108
109
110
# File 'sns/topic_subscription_config.rb', line 108

def subscriber_id
  @subscriber_id
end

#subscriber_scopeConstructs::Construct? (readonly)

Note:

Default: - use the topic as the scope of the subscription, in which case subscriberId must be defined.

The scope in which to create the SNS subscription resource.

Normally you'd want the subscription to be created on the consuming stack because the topic is usually referenced by the consumer's resource policy (e.g. SQS queue policy). Otherwise, it will cause a cyclic reference.

If this is undefined, the subscription will be created on the topic's stack.

Returns:

  • (Constructs::Construct, nil)


120
121
122
# File 'sns/topic_subscription_config.rb', line 120

def subscriber_scope
  @subscriber_scope
end

#subscription_dependencyConstructs::IDependable? (readonly)

Note:

Default: - empty list

The resources that need to be created before the subscription can be safely created.

For example for SQS subscription, the subscription needs to have a dependency on the SQS queue policy in order for the subscription to successfully deliver messages.

Returns:

  • (Constructs::IDependable, nil)


128
129
130
# File 'sns/topic_subscription_config.rb', line 128

def subscription_dependency
  @subscription_dependency
end

#subscription_role_arnString? (readonly)

Note:

Default: - No subscription role is provided

Arn of role allowing access to firehose delivery stream.

Required for a firehose subscription protocol.

Returns:

  • (String, nil)


100
101
102
# File 'sns/topic_subscription_config.rb', line 100

def subscription_role_arn
  @subscription_role_arn
end

Class Method Details

.jsii_propertiesObject



130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'sns/topic_subscription_config.rb', line 130

def self.jsii_properties
  {
    :endpoint => "endpoint",
    :protocol => "protocol",
    :dead_letter_queue => "deadLetterQueue",
    :delivery_policy => "deliveryPolicy",
    :filter_policy => "filterPolicy",
    :filter_policy_with_message_body => "filterPolicyWithMessageBody",
    :raw_message_delivery => "rawMessageDelivery",
    :region => "region",
    :subscription_role_arn => "subscriptionRoleArn",
    :subscriber_id => "subscriberId",
    :subscriber_scope => "subscriberScope",
    :subscription_dependency => "subscriptionDependency",
  }
end

Instance Method Details

#to_jsiiObject



147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'sns/topic_subscription_config.rb', line 147

def to_jsii
  result = {}
  result.merge!(super)
  result.merge!({
    "endpoint" => @endpoint,
    "protocol" => @protocol,
    "deadLetterQueue" => @dead_letter_queue,
    "deliveryPolicy" => @delivery_policy,
    "filterPolicy" => @filter_policy,
    "filterPolicyWithMessageBody" => @filter_policy_with_message_body,
    "rawMessageDelivery" => @raw_message_delivery,
    "region" => @region,
    "subscriptionRoleArn" => @subscription_role_arn,
    "subscriberId" => @subscriber_id,
    "subscriberScope" => @subscriber_scope,
    "subscriptionDependency" => @subscription_dependency,
  })
  result.compact
end