You are viewing documentation for version 2 of the AWS SDK for Ruby. Version 3 documentation can be found here.
Class: Aws::SNS::Client
- Inherits:
-
Seahorse::Client::Base
- Object
- Seahorse::Client::Base
- Aws::SNS::Client
- Defined in:
- (unknown)
Overview
An API client for Amazon Simple Notification Service. To construct a client, you need to configure a :region
and :credentials
.
sns = Aws::SNS::Client.new(
region: region_name,
credentials: credentials,
# ...
)
See #initialize for a full list of supported configuration options.
Region
You can configure a default region in the following locations:
ENV['AWS_REGION']
Aws.config[:region]
Go here for a list of supported regions.
Credentials
Default credentials are loaded automatically from the following locations:
ENV['AWS_ACCESS_KEY_ID']
andENV['AWS_SECRET_ACCESS_KEY']
Aws.config[:credentials]
- The shared credentials ini file at
~/.aws/credentials
(more information) - From an instance profile when running on EC2
You can also construct a credentials object from one of the following classes:
Alternatively, you configure credentials with :access_key_id
and
:secret_access_key
:
# load credentials from disk
creds = YAML.load(File.read('/path/to/secrets'))
Aws::SNS::Client.new(
access_key_id: creds['access_key_id'],
secret_access_key: creds['secret_access_key']
)
Always load your credentials from outside your application. Avoid configuring credentials statically and never commit them to source control.
Instance Attribute Summary
Attributes inherited from Seahorse::Client::Base
Constructor collapse
-
#initialize(options = {}) ⇒ Aws::SNS::Client
constructor
Constructs an API client.
API Operations collapse
-
#add_permission(options = {}) ⇒ Struct
Adds a statement to a topic's access control policy, granting access for the specified AWS accounts to the specified actions.
.
-
#check_if_phone_number_is_opted_out(options = {}) ⇒ Types::CheckIfPhoneNumberIsOptedOutResponse
Accepts a phone number and indicates whether the phone holder has opted out of receiving SMS messages from your account.
-
#confirm_subscription(options = {}) ⇒ Types::ConfirmSubscriptionResponse
Verifies an endpoint owner's intent to receive messages by validating the token sent to the endpoint by an earlier
Subscribe
action. -
#create_platform_application(options = {}) ⇒ Types::CreatePlatformApplicationResponse
Creates a platform application object for one of the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging), to which devices and mobile apps may register.
-
#create_platform_endpoint(options = {}) ⇒ Types::CreateEndpointResponse
Creates an endpoint for a device and mobile app on one of the supported push notification services, such as GCM (Firebase Cloud Messaging) and APNS.
-
#create_topic(options = {}) ⇒ Types::CreateTopicResponse
Creates a topic to which notifications can be published.
-
#delete_endpoint(options = {}) ⇒ Struct
Deletes the endpoint for a device and mobile app from Amazon SNS.
-
#delete_platform_application(options = {}) ⇒ Struct
Deletes a platform application object for one of the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging).
-
#delete_topic(options = {}) ⇒ Struct
Deletes a topic and all its subscriptions.
-
#get_endpoint_attributes(options = {}) ⇒ Types::GetEndpointAttributesResponse
Retrieves the endpoint attributes for a device on one of the supported push notification services, such as GCM (Firebase Cloud Messaging) and APNS.
-
#get_platform_application_attributes(options = {}) ⇒ Types::GetPlatformApplicationAttributesResponse
Retrieves the attributes of the platform application object for the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging).
-
#get_sms_attributes(options = {}) ⇒ Types::GetSMSAttributesResponse
Returns the settings for sending SMS messages from your account.
These settings are set with the
.SetSMSAttributes
action. -
#get_subscription_attributes(options = {}) ⇒ Types::GetSubscriptionAttributesResponse
Returns all of the properties of a subscription.
.
-
#get_topic_attributes(options = {}) ⇒ Types::GetTopicAttributesResponse
Returns all of the properties of a topic.
-
#list_endpoints_by_platform_application(options = {}) ⇒ Types::ListEndpointsByPlatformApplicationResponse
Lists the endpoints and endpoint attributes for devices in a supported push notification service, such as GCM (Firebase Cloud Messaging) and APNS.
-
#list_phone_numbers_opted_out(options = {}) ⇒ Types::ListPhoneNumbersOptedOutResponse
Returns a list of phone numbers that are opted out, meaning you cannot send SMS messages to them.
The results for
ListPhoneNumbersOptedOut
are paginated, and each page returns up to 100 phone numbers. -
#list_platform_applications(options = {}) ⇒ Types::ListPlatformApplicationsResponse
Lists the platform application objects for the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging).
-
#list_subscriptions(options = {}) ⇒ Types::ListSubscriptionsResponse
Returns a list of the requester's subscriptions.
-
#list_subscriptions_by_topic(options = {}) ⇒ Types::ListSubscriptionsByTopicResponse
Returns a list of the subscriptions to a specific topic.
-
#list_tags_for_resource(options = {}) ⇒ Types::ListTagsForResourceResponse
List all tags added to the specified Amazon SNS topic.
-
#list_topics(options = {}) ⇒ Types::ListTopicsResponse
Returns a list of the requester's topics.
-
#opt_in_phone_number(options = {}) ⇒ Struct
Use this request to opt in a phone number that is opted out, which enables you to resume sending SMS messages to the number.
You can opt in a phone number only once every 30 days.
. -
#publish(options = {}) ⇒ Types::PublishResponse
Sends a message to an Amazon SNS topic, a text message (SMS message) directly to a phone number, or a message to a mobile platform endpoint (when you specify the
TargetArn
).If you send a message to a topic, Amazon SNS delivers the message to each endpoint that is subscribed to the topic.
-
#remove_permission(options = {}) ⇒ Struct
Removes a statement from a topic's access control policy.
.
-
#set_endpoint_attributes(options = {}) ⇒ Struct
Sets the attributes for an endpoint for a device on one of the supported push notification services, such as GCM (Firebase Cloud Messaging) and APNS.
-
#set_platform_application_attributes(options = {}) ⇒ Struct
Sets the attributes of the platform application object for the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging).
-
#set_sms_attributes(options = {}) ⇒ Struct
Use this request to set the default settings for sending SMS messages and receiving daily SMS usage reports.
You can override some of these settings for a single message when you use the
Publish
action with theMessageAttributes.entry.N
parameter. -
#set_subscription_attributes(options = {}) ⇒ Struct
Allows a subscription owner to set an attribute of the subscription to a new value.
.
-
#set_topic_attributes(options = {}) ⇒ Struct
Allows a topic owner to set an attribute of the topic to a new value.
.
-
#subscribe(options = {}) ⇒ Types::SubscribeResponse
Subscribes an endpoint to an Amazon SNS topic.
-
#tag_resource(options = {}) ⇒ Struct
Add tags to the specified Amazon SNS topic.
-
#unsubscribe(options = {}) ⇒ Struct
Deletes a subscription.
-
#untag_resource(options = {}) ⇒ Struct
Remove tags from the specified Amazon SNS topic.
Instance Method Summary collapse
-
#wait_until(waiter_name, params = {}) {|waiter| ... } ⇒ Boolean
Waiters polls an API operation until a resource enters a desired state.
-
#waiter_names ⇒ Array<Symbol>
Returns the list of supported waiters.
Methods inherited from Seahorse::Client::Base
add_plugin, api, #build_request, clear_plugins, define, new, #operation, #operation_names, plugins, remove_plugin, set_api, set_plugins
Methods included from Seahorse::Client::HandlerBuilder
#handle, #handle_request, #handle_response
Constructor Details
#initialize(options = {}) ⇒ Aws::SNS::Client
Constructs an API client.
Instance Method Details
#add_permission(options = {}) ⇒ Struct
Adds a statement to a topic's access control policy, granting access for the specified AWS accounts to the specified actions.
#check_if_phone_number_is_opted_out(options = {}) ⇒ Types::CheckIfPhoneNumberIsOptedOutResponse
Accepts a phone number and indicates whether the phone holder has opted out of receiving SMS messages from your account. You cannot send SMS messages to a number that is opted out.
To resume sending messages, you can opt in the number by using the OptInPhoneNumber
action.
#confirm_subscription(options = {}) ⇒ Types::ConfirmSubscriptionResponse
Verifies an endpoint owner's intent to receive messages by validating the token sent to the endpoint by an earlier Subscribe
action. If the token is valid, the action creates a new subscription and returns its Amazon Resource Name (ARN). This call requires an AWS signature only when the AuthenticateOnUnsubscribe
flag is set to "true".
#create_platform_application(options = {}) ⇒ Types::CreatePlatformApplicationResponse
Creates a platform application object for one of the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging), to which devices and mobile apps may register. You must specify PlatformPrincipal
and PlatformCredential
attributes when using the CreatePlatformApplication
action.
PlatformPrincipal
and PlatformCredential
are received from the notification service.
-
For
ADM
,PlatformPrincipal
isclient id
andPlatformCredential
isclient secret
. -
For
Baidu
,PlatformPrincipal
isAPI key
andPlatformCredential
issecret key
. -
For
APNS
andAPNS_SANDBOX
,PlatformPrincipal
isSSL certificate
andPlatformCredential
isprivate key
. -
For
GCM
(Firebase Cloud Messaging), there is noPlatformPrincipal
and thePlatformCredential
isAPI key
. -
For
MPNS
,PlatformPrincipal
isTLS certificate
andPlatformCredential
isprivate key
. -
For
WNS
,PlatformPrincipal
isPackage Security Identifier
andPlatformCredential
issecret key
.
You can use the returned PlatformApplicationArn
as an attribute for the CreatePlatformEndpoint
action.
#create_platform_endpoint(options = {}) ⇒ Types::CreateEndpointResponse
Creates an endpoint for a device and mobile app on one of the supported push notification services, such as GCM (Firebase Cloud Messaging) and APNS. CreatePlatformEndpoint
requires the PlatformApplicationArn
that is returned from CreatePlatformApplication
. You can use the returned EndpointArn
to send a message to a mobile app or by the Subscribe
action for subscription to a topic. The CreatePlatformEndpoint
action is idempotent, so if the requester already owns an endpoint with the same device token and attributes, that endpoint's ARN is returned without creating a new endpoint. For more information, see Using Amazon SNS Mobile Push Notifications.
When using CreatePlatformEndpoint
with Baidu, two attributes must be provided: ChannelId and UserId. The token field must also contain the ChannelId. For more information, see Creating an Amazon SNS Endpoint for Baidu.
#create_topic(options = {}) ⇒ Types::CreateTopicResponse
Creates a topic to which notifications can be published. Users can create at most 100,000 standard topics (at most 1,000 FIFO topics). For more information, see https://aws.amazon.com/sns. This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is returned without creating a new topic.
#delete_endpoint(options = {}) ⇒ Struct
Deletes the endpoint for a device and mobile app from Amazon SNS. This action is idempotent. For more information, see Using Amazon SNS Mobile Push Notifications.
When you delete an endpoint that is also subscribed to a topic, then you must also unsubscribe the endpoint from the topic.
#delete_platform_application(options = {}) ⇒ Struct
Deletes a platform application object for one of the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging). For more information, see Using Amazon SNS Mobile Push Notifications.
#delete_topic(options = {}) ⇒ Struct
Deletes a topic and all its subscriptions. Deleting a topic might prevent some messages previously sent to the topic from being delivered to subscribers. This action is idempotent, so deleting a topic that does not exist does not result in an error.
#get_endpoint_attributes(options = {}) ⇒ Types::GetEndpointAttributesResponse
Retrieves the endpoint attributes for a device on one of the supported push notification services, such as GCM (Firebase Cloud Messaging) and APNS. For more information, see Using Amazon SNS Mobile Push Notifications.
#get_platform_application_attributes(options = {}) ⇒ Types::GetPlatformApplicationAttributesResponse
Retrieves the attributes of the platform application object for the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging). For more information, see Using Amazon SNS Mobile Push Notifications.
#get_sms_attributes(options = {}) ⇒ Types::GetSMSAttributesResponse
Returns the settings for sending SMS messages from your account.
These settings are set with the SetSMSAttributes
action.
#get_subscription_attributes(options = {}) ⇒ Types::GetSubscriptionAttributesResponse
Returns all of the properties of a subscription.
#get_topic_attributes(options = {}) ⇒ Types::GetTopicAttributesResponse
Returns all of the properties of a topic. Topic properties returned might differ based on the authorization of the user.
#list_endpoints_by_platform_application(options = {}) ⇒ Types::ListEndpointsByPlatformApplicationResponse
Lists the endpoints and endpoint attributes for devices in a supported push notification service, such as GCM (Firebase Cloud Messaging) and APNS. The results for ListEndpointsByPlatformApplication
are paginated and return a limited list of endpoints, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListEndpointsByPlatformApplication
again using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications.
This action is throttled at 30 transactions per second (TPS).
#list_phone_numbers_opted_out(options = {}) ⇒ Types::ListPhoneNumbersOptedOutResponse
Returns a list of phone numbers that are opted out, meaning you cannot send SMS messages to them.
The results for ListPhoneNumbersOptedOut
are paginated, and each page returns up to 100 phone numbers. If additional phone numbers are available after the first page of results, then a NextToken
string will be returned. To receive the next page, you call ListPhoneNumbersOptedOut
again using the NextToken
string received from the previous call. When there are no more records to return, NextToken
will be null.
#list_platform_applications(options = {}) ⇒ Types::ListPlatformApplicationsResponse
Lists the platform application objects for the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging). The results for ListPlatformApplications
are paginated and return a limited list of applications, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListPlatformApplications
using the NextToken string received from the previous call. When there are no more records to return, NextToken
will be null. For more information, see Using Amazon SNS Mobile Push Notifications.
This action is throttled at 15 transactions per second (TPS).
#list_subscriptions(options = {}) ⇒ Types::ListSubscriptionsResponse
Returns a list of the requester's subscriptions. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken
is also returned. Use the NextToken
parameter in a new ListSubscriptions
call to get further results.
This action is throttled at 30 transactions per second (TPS).
#list_subscriptions_by_topic(options = {}) ⇒ Types::ListSubscriptionsByTopicResponse
Returns a list of the subscriptions to a specific topic. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken
is also returned. Use the NextToken
parameter in a new ListSubscriptionsByTopic
call to get further results.
This action is throttled at 30 transactions per second (TPS).
#list_tags_for_resource(options = {}) ⇒ Types::ListTagsForResourceResponse
List all tags added to the specified Amazon SNS topic. For an overview, see Amazon SNS Tags in the Amazon Simple Notification Service Developer Guide.
#list_topics(options = {}) ⇒ Types::ListTopicsResponse
Returns a list of the requester's topics. Each call returns a limited list of topics, up to 100. If there are more topics, a NextToken
is also returned. Use the NextToken
parameter in a new ListTopics
call to get further results.
This action is throttled at 30 transactions per second (TPS).
#opt_in_phone_number(options = {}) ⇒ Struct
Use this request to opt in a phone number that is opted out, which enables you to resume sending SMS messages to the number.
You can opt in a phone number only once every 30 days.
#publish(options = {}) ⇒ Types::PublishResponse
Sends a message to an Amazon SNS topic, a text message (SMS message) directly to a phone number, or a message to a mobile platform endpoint (when you specify the TargetArn
).
If you send a message to a topic, Amazon SNS delivers the message to each endpoint that is subscribed to the topic. The format of the message depends on the notification protocol for each subscribed endpoint.
When a messageId
is returned, the message has been saved and Amazon SNS will attempt to deliver it shortly.
To use the Publish
action for sending a message to a mobile endpoint, such as an app on a Kindle device or mobile phone, you must specify the EndpointArn for the TargetArn parameter. The EndpointArn is returned when making a call with the CreatePlatformEndpoint
action.
For more information about formatting messages, see Send Custom Platform-Specific Payloads in Messages to Mobile Devices.
You can publish messages only to topics and endpoints in the same AWS Region.
#remove_permission(options = {}) ⇒ Struct
Removes a statement from a topic's access control policy.
#set_endpoint_attributes(options = {}) ⇒ Struct
Sets the attributes for an endpoint for a device on one of the supported push notification services, such as GCM (Firebase Cloud Messaging) and APNS. For more information, see Using Amazon SNS Mobile Push Notifications.
#set_platform_application_attributes(options = {}) ⇒ Struct
Sets the attributes of the platform application object for the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging). For more information, see Using Amazon SNS Mobile Push Notifications. For information on configuring attributes for message delivery status, see Using Amazon SNS Application Attributes for Message Delivery Status.
#set_sms_attributes(options = {}) ⇒ Struct
Use this request to set the default settings for sending SMS messages and receiving daily SMS usage reports.
You can override some of these settings for a single message when you use the Publish
action with the MessageAttributes.entry.N
parameter. For more information, see Publishing to a mobile phone in the Amazon SNS Developer Guide.
#set_subscription_attributes(options = {}) ⇒ Struct
Allows a subscription owner to set an attribute of the subscription to a new value.
#set_topic_attributes(options = {}) ⇒ Struct
Allows a topic owner to set an attribute of the topic to a new value.
#subscribe(options = {}) ⇒ Types::SubscribeResponse
Subscribes an endpoint to an Amazon SNS topic. If the endpoint type is HTTP/S or email, or if the endpoint and the topic are not in the same AWS account, the endpoint owner must run the ConfirmSubscription
action to confirm the subscription.
You call the ConfirmSubscription
action with the token from the subscription response. Confirmation tokens are valid for three days.
This action is throttled at 100 transactions per second (TPS).
#tag_resource(options = {}) ⇒ Struct
Add tags to the specified Amazon SNS topic. For an overview, see Amazon SNS Tags in the Amazon SNS Developer Guide.
When you use topic tags, keep the following guidelines in mind:
-
Adding more than 50 tags to a topic isn't recommended.
-
Tags don't have any semantic meaning. Amazon SNS interprets tags as character strings.
-
Tags are case-sensitive.
-
A new tag with a key identical to that of an existing tag overwrites the existing tag.
-
Tagging actions are limited to 10 TPS per AWS account, per AWS region. If your application requires a higher throughput, file a technical support request.
#unsubscribe(options = {}) ⇒ Struct
Deletes a subscription. If the subscription requires authentication for deletion, only the owner of the subscription or the topic's owner can unsubscribe, and an AWS signature is required. If the Unsubscribe
call does not require authentication and the requester is not the subscription owner, a final cancellation message is delivered to the endpoint, so that the endpoint owner can easily resubscribe to the topic if the Unsubscribe
request was unintended.
This action is throttled at 100 transactions per second (TPS).
#untag_resource(options = {}) ⇒ Struct
Remove tags from the specified Amazon SNS topic. For an overview, see Amazon SNS Tags in the Amazon SNS Developer Guide.
#wait_until(waiter_name, params = {}) {|waiter| ... } ⇒ Boolean
Waiters polls an API operation until a resource enters a desired state.
Basic Usage
Waiters will poll until they are succesful, they fail by entering a terminal state, or until a maximum number of attempts are made.
# polls in a loop, sleeping between attempts client.waiter_until(waiter_name, params)
Configuration
You can configure the maximum number of polling attempts, and the delay (in seconds) between each polling attempt. You configure waiters by passing a block to #wait_until:
# poll for ~25 seconds
client.wait_until(...) do |w|
w.max_attempts = 5
w.delay = 5
end
Callbacks
You can be notified before each polling attempt and before each
delay. If you throw :success
or :failure
from these callbacks,
it will terminate the waiter.
started_at = Time.now
client.wait_until(...) do |w|
# disable max attempts
w.max_attempts = nil
# poll for 1 hour, instead of a number of attempts
w.before_wait do |attempts, response|
throw :failure if Time.now - started_at > 3600
end
end
Handling Errors
When a waiter is successful, it returns true
. When a waiter
fails, it raises an error. All errors raised extend from
Waiters::Errors::WaiterFailed.
begin
client.wait_until(...)
rescue Aws::Waiters::Errors::WaiterFailed
# resource did not enter the desired state in time
end
#waiter_names ⇒ Array<Symbol>
Returns the list of supported waiters. The following table lists the supported waiters and the client method they call:
Waiter Name | Client Method | Default Delay: | Default Max Attempts: |
---|