class Aws::SNS::Resource

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)

Public Class Methods

new(options = {}) click to toggle source

@param options ({}) @option options [Client] :client

# File lib/aws-sdk-sns/resource.rb, line 27
def initialize(options = {})
  @client = options[:client] || Client.new(options)
end

Public Instance Methods

client() click to toggle source

@return [Client]

# File lib/aws-sdk-sns/resource.rb, line 32
def client
  @client
end
create_platform_application(options = {}) click to toggle source

@example Request syntax with placeholder values

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

@param [Hash] options ({}) @option options [required, String] :name

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.

@option options [required, String] :platform

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

@option options [required, Hash<String,String>] :attributes

For a list of attributes, see [SetPlatformApplicationAttributes][1].

[1]: https://docs.aws.amazon.com/sns/latest/api/API_SetPlatformApplicationAttributes.html

@return [PlatformApplication]

# File 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 = {}) click to toggle source

@example Request syntax with placeholder values

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

@param [Hash] options ({}) @option options [required, String] :name

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.

@option options [Hash<String,String>] :attributes

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][1]\:

* `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][2]. For more examples, see [KeyId][3]
  in the *Key Management Service API Reference*.

^

The following attributes apply only to [FIFO topics][4]\:

* `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][5] 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.

[1]: https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html
[2]: https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms
[3]: https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters
[4]: https://docs.aws.amazon.com/sns/latest/dg/sns-fifo-topics.html
[5]: https://docs.aws.amazon.com/sns/latest/api/API_Publish.html

@option options [Array<Types::Tag>] :tags

The list of tags to add to a new topic.

<note markdown="1"> To be able to tag a topic on creation, you must have the
`sns:CreateTopic` and `sns:TagResource` permissions.

 </note>

@return [Topic]

# File lib/aws-sdk-sns/resource.rb, line 156
def create_topic(options = {})
  resp = @client.create_topic(options)
  Topic.new(
    arn: resp.data.topic_arn,
    client: @client
  )
end
platform_application(arn) click to toggle source

@param [String] arn @return [PlatformApplication]

# File lib/aws-sdk-sns/resource.rb, line 168
def platform_application(arn)
  PlatformApplication.new(
    arn: arn,
    client: @client
  )
end
platform_applications(options = {}) click to toggle source

@example Request syntax with placeholder values

sns.platform_applications()

@param [Hash] options ({}) @return [PlatformApplication::Collection]

# File lib/aws-sdk-sns/resource.rb, line 180
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) click to toggle source

@param [String] arn @return [PlatformEndpoint]

# File lib/aws-sdk-sns/resource.rb, line 199
def platform_endpoint(arn)
  PlatformEndpoint.new(
    arn: arn,
    client: @client
  )
end
subscription(arn) click to toggle source

@param [String] arn @return [Subscription]

# File lib/aws-sdk-sns/resource.rb, line 208
def subscription(arn)
  Subscription.new(
    arn: arn,
    client: @client
  )
end
subscriptions(options = {}) click to toggle source

@example Request syntax with placeholder values

sns.subscriptions()

@param [Hash] options ({}) @return [Subscription::Collection]

# File lib/aws-sdk-sns/resource.rb, line 220
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) click to toggle source

@param [String] arn @return [Topic]

# File lib/aws-sdk-sns/resource.rb, line 239
def topic(arn)
  Topic.new(
    arn: arn,
    client: @client
  )
end
topics(options = {}) click to toggle source

@example Request syntax with placeholder values

sns.topics()

@param [Hash] options ({}) @return [Topic::Collection]

# File lib/aws-sdk-sns/resource.rb, line 251
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