Class: Aws::SNS::Resource

Inherits:
Object
  • Object
show all
Defined in:
gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb

Overview

This class provides a resource oriented interface for SNS. To create a resource object:

resource = Aws::SNS::Resource.new(region: 'us-west-2')

You can supply a client object with custom configuration that will be used for all resource operations. If you do not pass :client, a default client will be constructed.

client = Aws::SNS::Client.new(region: 'us-west-2')
resource = Aws::SNS::Resource.new(client: client)

Actions collapse

Associations collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Resource

Returns a new instance of Resource.

Parameters:

  • options ({}) (defaults to: {})

Options Hash (options):



27
28
29
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 27

def initialize(options = {})
  @client = options[:client] || Client.new(options)
end

Instance Method Details

#clientClient

Returns:



32
33
34
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 32

def client
  @client
end

#create_platform_application(options = {}) ⇒ PlatformApplication

Examples:

Request syntax with placeholder values


platformapplication = sns.create_platform_application({
  name: "String", # required
  platform: "String", # required
  attributes: { # required
    "String" => "String",
  },
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :name (required, String)

    Application names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, hyphens, and periods, and must be between 1 and 256 characters long.

  • :platform (required, String)

    The following platforms are supported: ADM (Amazon Device Messaging), APNS (Apple Push Notification Service), APNS_SANDBOX, and GCM (Firebase Cloud Messaging).

  • :attributes (required, Hash<String,String>)

    For a list of attributes, see SetPlatformApplicationAttributes.

Returns:



63
64
65
66
67
68
69
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 63

def create_platform_application(options = {})
  resp = @client.create_platform_application(options)
  PlatformApplication.new(
    arn: resp.data.platform_application_arn,
    client: @client
  )
end

#create_topic(options = {}) ⇒ Topic

Examples:

Request syntax with placeholder values


topic = sns.create_topic({
  name: "topicName", # required
  attributes: {
    "attributeName" => "attributeValue",
  },
  tags: [
    {
      key: "TagKey", # required
      value: "TagValue", # required
    },
  ],
  data_protection_policy: "attributeValue",
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :name (required, String)

    The name of the topic you want to create.

    Constraints: Topic names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long.

    For a FIFO (first-in-first-out) topic, the name must end with the .fifo suffix.

  • :attributes (Hash<String,String>)

    A map of attributes with their corresponding values.

    The following lists the names, descriptions, and values of the special request parameters that the CreateTopic action uses:

    • DeliveryPolicy – The policy that defines how Amazon SNS retries failed deliveries to HTTP/S endpoints.

    • DisplayName – The display name to use for a topic with SMS subscriptions.

    • FifoTopic – Set to true to create a FIFO topic.

    • Policy – The policy that defines who can access your topic. By default, only the topic owner can publish or subscribe to the topic.

    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:

    • FifoTopic – When this is set to true, a FIFO topic is created.

    • ContentBasedDeduplication – Enables content-based deduplication for FIFO topics.

      • By default, ContentBasedDeduplication is set to false. If you create a FIFO topic and this attribute is false, you must specify a value for the MessageDeduplicationId parameter for the Publish action.

      • When you set ContentBasedDeduplication to true, Amazon SNS uses a SHA-256 hash to generate the MessageDeduplicationId using 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 MessageDeduplicationId parameter for the Publish action.

  • :tags (Array<Types::Tag>)

    The list of tags to add to a new topic.

    To be able to tag a topic on creation, you must have the sns:CreateTopic and sns:TagResource permissions.

  • :data_protection_policy (String)

    The body of the policy document you want to use for this topic.

    You can only add one policy per topic.

    The policy must be in JSON string format.

    Length Constraints: Maximum length of 30,720.

Returns:



165
166
167
168
169
170
171
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 165

def create_topic(options = {})
  resp = @client.create_topic(options)
  Topic.new(
    arn: resp.data.topic_arn,
    client: @client
  )
end

#platform_application(arn) ⇒ PlatformApplication

Parameters:

  • arn (String)

Returns:



177
178
179
180
181
182
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 177

def platform_application(arn)
  PlatformApplication.new(
    arn: arn,
    client: @client
  )
end

#platform_applications(options = {}) ⇒ PlatformApplication::Collection

Examples:

Request syntax with placeholder values


sns.platform_applications()

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Returns:



189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 189

def platform_applications(options = {})
  batches = Enumerator.new do |y|
    resp = @client.list_platform_applications(options)
    resp.each_page do |page|
      batch = []
      page.data.platform_applications.each do |p|
        batch << PlatformApplication.new(
          arn: p.platform_application_arn,
          client: @client
        )
      end
      y.yield(batch)
    end
  end
  PlatformApplication::Collection.new(batches)
end

#platform_endpoint(arn) ⇒ PlatformEndpoint

Parameters:

  • arn (String)

Returns:



208
209
210
211
212
213
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 208

def platform_endpoint(arn)
  PlatformEndpoint.new(
    arn: arn,
    client: @client
  )
end

#subscription(arn) ⇒ Subscription

Parameters:

  • arn (String)

Returns:



217
218
219
220
221
222
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 217

def subscription(arn)
  Subscription.new(
    arn: arn,
    client: @client
  )
end

#subscriptions(options = {}) ⇒ Subscription::Collection

Examples:

Request syntax with placeholder values


sns.subscriptions()

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Returns:



229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 229

def subscriptions(options = {})
  batches = Enumerator.new do |y|
    resp = @client.list_subscriptions(options)
    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

#topic(arn) ⇒ Topic

Parameters:

  • arn (String)

Returns:



248
249
250
251
252
253
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 248

def topic(arn)
  Topic.new(
    arn: arn,
    client: @client
  )
end

#topics(options = {}) ⇒ Topic::Collection

Examples:

Request syntax with placeholder values


sns.topics()

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Returns:



260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
# File 'gems/aws-sdk-sns/lib/aws-sdk-sns/resource.rb', line 260

def topics(options = {})
  batches = Enumerator.new do |y|
    resp = @client.list_topics(options)
    resp.each_page do |page|
      batch = []
      page.data.topics.each do |t|
        batch << Topic.new(
          arn: t.topic_arn,
          client: @client
        )
      end
      y.yield(batch)
    end
  end
  Topic::Collection.new(batches)
end