publish
(**kwargs)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 is saved and Amazon SNS immediately delivers it to subscribers.
To use the Publish
action for publishing 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.
Warning
You can publish messages only to topics and endpoints in the same Amazon Web Services Region.
See also: AWS API Documentation
Request Syntax
response = topic.publish(
TargetArn='string',
PhoneNumber='string',
Message='string',
Subject='string',
MessageStructure='string',
MessageAttributes={
'string': {
'DataType': 'string',
'StringValue': 'string',
'BinaryValue': b'bytes'
}
},
MessageDeduplicationId='string',
MessageGroupId='string'
)
TargetArn
parameter, you must specify a value for the PhoneNumber
or TopicArn
parameters.The phone number to which you want to deliver an SMS message. Use E.164 format.
If you don't specify a value for the PhoneNumber
parameter, you must specify a value for the TargetArn
or TopicArn
parameters.
[REQUIRED]
The message you want to send.
If you are publishing to a topic and you want to send the same message to all transport protocols, include the text of the message as a String value. If you want to send different messages for each transport protocol, set the value of the MessageStructure
parameter to json
and use a JSON object for the Message
parameter.
Constraints:
Publish
action is 1,600 characters.JSON-specific constraints:
Publish
call to return an error (no partial delivery).Optional parameter to be used as the "Subject" line when the message is delivered to email endpoints. This field will also be included, if present, in the standard JSON messages delivered to other endpoints.
Constraints: Subjects must be ASCII text that begins with a letter, number, or punctuation mark; must not include line breaks or control characters; and must be less than 100 characters long.
Set MessageStructure
to json
if you want to send a different message for each protocol. For example, using one publish action, you can send a short message to your SMS subscribers and a longer message to your email subscribers. If you set MessageStructure
to json
, the value of the Message
parameter must:
You can define other top-level keys that define the message you want to send to a specific transport protocol (e.g., "http").
Valid value: json
Message attributes for Publish action.
The user-specified message attribute value. For string data types, the value attribute has the same restrictions on the content as the message body. For more information, see Publish.
Name, type, and value must not be empty or null. In addition, the message body should not be empty or null. All parts of the message attribute, including name, type, and value, are included in the message size restriction, which is currently 256 KB (262,144 bytes). For more information, see Amazon SNS message attributes and Publishing to a mobile phone in the Amazon SNS Developer Guide.
Amazon SNS supports the following logical data types: String, String.Array, Number, and Binary. For more information, see Message Attribute Data Types.
Strings are Unicode with UTF8 binary encoding. For a list of code values, see ASCII Printable Characters.
Binary type attributes can store any binary data, for example, compressed data, encrypted data, or images.
This parameter applies only to FIFO (first-in-first-out) topics. The MessageDeduplicationId
can contain up to 128 alphanumeric characters (a-z, A-Z, 0-9)
and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)
.
Every message must have a unique MessageDeduplicationId
, which is a token used for deduplication of sent messages. If a message with a particular MessageDeduplicationId
is sent successfully, any message sent with the same MessageDeduplicationId
during the 5-minute deduplication interval is treated as a duplicate.
If the topic has ContentBasedDeduplication
set, the system generates a MessageDeduplicationId
based on the contents of the message. Your MessageDeduplicationId
overrides the generated one.
This parameter applies only to FIFO (first-in-first-out) topics. The MessageGroupId
can contain up to 128 alphanumeric characters (a-z, A-Z, 0-9)
and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)
.
The MessageGroupId
is a tag that specifies that a message belongs to a specific message group. Messages that belong to the same message group are processed in a FIFO manner (however, messages in different message groups might be processed out of order). Every message must include a MessageGroupId
.
dict
Response Syntax
{
'MessageId': 'string',
'SequenceNumber': 'string'
}
Response Structure
(dict) --
Response for Publish action.
MessageId (string) --
Unique identifier assigned to the published message.
Length Constraint: Maximum 100 characters
SequenceNumber (string) --
This response element applies only to FIFO (first-in-first-out) topics.
The sequence number is a large, non-consecutive number that Amazon SNS assigns to each message. The length of SequenceNumber
is 128 bits. SequenceNumber
continues to increase for each MessageGroupId
.