Class: Aws::SNS::Topic
- Inherits:
-
Object
- Object
- Aws::SNS::Topic
- Defined in:
- gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb
Defined Under Namespace
Classes: Collection
Read-Only Attributes collapse
-
#arn ⇒ String
-
#attributes ⇒ Hash<String,String>
A map of the topic's attributes.
Actions collapse
-
#add_permission(options = {}) ⇒ EmptyStructure
-
#confirm_subscription(options = {}) ⇒ Subscription
-
#delete(options = {}) ⇒ EmptyStructure
-
#publish(options = {}) ⇒ Types::PublishResponse
-
#remove_permission(options = {}) ⇒ EmptyStructure
-
#set_attributes(options = {}) ⇒ EmptyStructure
-
#subscribe(options = {}) ⇒ Subscription
Associations collapse
Instance Method Summary collapse
-
#client ⇒ Client
-
#data ⇒ Types::GetTopicAttributesResponse
Returns the data for this Topic.
-
#data_loaded? ⇒ Boolean
Returns
trueif this resource is loaded. -
#initialize(*args) ⇒ Topic
constructor
A new instance of Topic.
- #load ⇒ self (also: #reload)
Constructor Details
#initialize(arn, options = {}) ⇒ Topic #initialize(options = {}) ⇒ Topic
Returns a new instance of Topic.
22 23 24 25 26 27 28 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 22 def initialize(*args) = Hash === args.last ? args.pop.dup : {} @arn = extract_arn(args, ) @data = .delete(:data) @client = .delete(:client) || Client.new() @waiter_block_warned = false end |
Instance Method Details
#add_permission(options = {}) ⇒ EmptyStructure
195 196 197 198 199 200 201 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 195 def ( = {}) = .merge(topic_arn: @arn) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.() end resp.data end |
#arn ⇒ String
33 34 35 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 33 def arn @arn end |
#attributes ⇒ Hash<String,String>
A map of the topic's attributes. Attributes in this map include the following:
DeliveryPolicy– The JSON serialization of the topic's delivery policy.DisplayName– The human-readable name used in theFromfield for notifications toemailandemail-jsonendpoints.EffectiveDeliveryPolicy– The JSON serialization of the effective delivery policy, taking system defaults into account.Owner– The Amazon Web Services account ID of the topic's owner.Policy– The JSON serialization of the topic's access control policy.SignatureVersion– The signature version corresponds to the hashing algorithm used while creating the signature of the notifications, subscription confirmations, or unsubscribe confirmation messages sent by Amazon SNS.By default,
SignatureVersionis set to 1. The signature is a Base64-encoded SHA1withRSA signature.When you set
SignatureVersionto 2. Amazon SNS uses a Base64-encoded SHA256withRSA signature.If the API response does not include the SignatureVersionattribute, it means that theSignatureVersionfor the topic has value 1.
SubscriptionsConfirmed– The number of confirmed subscriptions for the topic.SubscriptionsDeleted– The number of deleted subscriptions for the topic.SubscriptionsPending– The number of subscriptions pending confirmation for the topic.TopicArn– The topic's ARN.TracingConfig– Tracing mode of an Amazon SNS topic. By defaultTracingConfigis set toPassThrough, and the topic passes through the tracing header it receives from an Amazon SNS publisher to its subscriptions. If set toActive, Amazon SNS will vend X-Ray segment data to topic owner account if the sampled flag in the tracing header is true. This is only supported on standard topics.
The following attribute applies only to server-side-encryption:
KmsMasterKeyId- The ID of an Amazon Web Services managed customer master key (CMK) for Amazon SNS or a custom CMK. For more information, see Key Terms. For more examples, see KeyId in the Key Management Service API Reference.
^
The following attributes apply only to FIFO topics:
ArchivePolicy– The policy that sets the retention period for messages stored in the message archive of an Amazon SNS FIFO topic.BeginningArchiveTime– The earliest starting point at which a message in the topic’s archive can be replayed from. This point in time is based on the configured message retention period set by the topic’s message archiving policy.ContentBasedDeduplication– Enables content-based deduplication for FIFO topics.By default,
ContentBasedDeduplicationis set tofalse. If you create a FIFO topic and this attribute isfalse, you must specify a value for theMessageDeduplicationIdparameter for the Publish action.When you set
ContentBasedDeduplicationtotrue, Amazon SNS uses a SHA-256 hash to generate theMessageDeduplicationIdusing the body of the message (but not the attributes of the message).(Optional) To override the generated value, you can specify a value for the
MessageDeduplicationIdparameter for thePublishaction.
FifoTopic– When this is set totrue, a FIFO topic is created.
132 133 134 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 132 def attributes data[:attributes] end |
#client ⇒ Client
139 140 141 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 139 def client @client end |
#confirm_subscription(options = {}) ⇒ Subscription
219 220 221 222 223 224 225 226 227 228 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 219 def confirm_subscription( = {}) = .merge(topic_arn: @arn) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.confirm_subscription() end Subscription.new( arn: resp.data.subscription_arn, client: @client ) end |
#data ⇒ Types::GetTopicAttributesResponse
Returns the data for this Aws::SNS::Topic. Calls
Client#get_topic_attributes if #data_loaded? is false.
161 162 163 164 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 161 def data load unless @data @data end |
#data_loaded? ⇒ Boolean
169 170 171 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 169 def data_loaded? !!@data end |
#delete(options = {}) ⇒ EmptyStructure
235 236 237 238 239 240 241 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 235 def delete( = {}) = .merge(topic_arn: @arn) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.delete_topic() end resp.data end |
#load ⇒ self Also known as: reload
Loads, or reloads #data for the current Aws::SNS::Topic.
Returns self making it possible to chain methods.
topic.reload.data
149 150 151 152 153 154 155 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 149 def load resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.get_topic_attributes(topic_arn: @arn) end @data = resp.data self end |
#publish(options = {}) ⇒ Types::PublishResponse
417 418 419 420 421 422 423 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 417 def publish( = {}) = .merge(topic_arn: @arn) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.publish() end resp.data end |
#remove_permission(options = {}) ⇒ EmptyStructure
434 435 436 437 438 439 440 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 434 def ( = {}) = .merge(topic_arn: @arn) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.() end resp.data end |
#set_attributes(options = {}) ⇒ EmptyStructure
621 622 623 624 625 626 627 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 621 def set_attributes( = {}) = .merge(topic_arn: @arn) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.set_topic_attributes() end resp.data end |
#subscribe(options = {}) ⇒ Subscription
775 776 777 778 779 780 781 782 783 784 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 775 def subscribe( = {}) = .merge(topic_arn: @arn) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.subscribe() end Subscription.new( arn: resp.data.subscription_arn, client: @client ) end |
#subscriptions(options = {}) ⇒ Subscription::Collection
793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 |
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/topic.rb', line 793 def subscriptions( = {}) batches = Enumerator.new do |y| = .merge(topic_arn: @arn) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.list_subscriptions_by_topic() end resp.each_page do |page| batch = [] page.data.subscriptions.each do |s| batch << Subscription.new( arn: s.subscription_arn, client: @client ) end y.yield(batch) end end Subscription::Collection.new(batches) end |