SNS¶
Amazon SNS invokes your function asynchronously with an event that contains a message and metadata.
Request¶
EventVersion(String)- Event version should be 1.0
EventSubscriptionArn(String)- Event subscription arn
EventSource(String)- The AWS service from which the SNS event record originated. For SNS, this is
aws:sns Sns.SignatureVersion(String)- Version of the Amazon SNS signature used, should be 1
Sns.Timestamp(String)- The time (GMT) when the subscription confirmation was sent.
Sns.Signature(String)- Base64-encoded "SHA1withRSA" signature of the Message, MessageId, Type, Timestamp, and TopicArn values.
Sns.SigningCertUrl(String)- The URL to the certificate that was used to sign the message.
Sns.MessageId(String)- A Universally Unique Identifier, unique for each message published. For a message that Amazon SNS resends during a retry, the message ID of the original message is used.
Sns.Message(String)- A string that describes the message.
Sns.Type(String)- The type of message. For a subscription confirmation, the type is
SubscriptionConfirmation. Sns.UnsubscribeUrl(String)- A URL that you can use to unsubscribe the endpoint from this topic. If you visit this URL, Amazon SNS unsubscribes the endpoint and stops sending notifications to this endpoint.
Sns.TopicArn(String)- The Amazon Resource Name (ARN) for the topic that this endpoint is subscribed to.
Sns.Subject(String)- The Subject parameter specified when the notification was published to the topic.
Sns.MessageAttributes.Type(String)- The supported message attribute data types are
String,String.Array,Number, andBinary. Sns.MessageAttributes.Value(String)- The user-specified message attribute value.
Example Amazon SNS message event
{
"Records": [
{
"EventVersion": "1.0",
"EventSubscriptionArn": "arn:aws:sns:us-east-2:123456789012:sns-lambda:21be56ed-a058-49f5-8c98-aedd2564c486",
"EventSource": "aws:sns",
"Sns": {
"SignatureVersion": "1",
"Timestamp": "2019-01-02T12:45:07.000Z",
"Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==",
"SigningCertUrl": "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem",
"MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
"Message": "Hello from SNS!",
"MessageAttributes": {
"Test": {
"Type": "String",
"Value": "TestString"
},
"TestBinary": {
"Type": "Binary",
"Value": "TestBinary"
}
},
"Type": "Notification",
"UnsubscribeUrl": "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486",
"TopicArn": "arn:aws:sns:us-east-2:123456789012:sns-lambda",
"Subject": "TestInvoke"
}
}
]
}
Generating sample events¶
Via AWS SAM CLI you can generate sample events
# For help run
sam local generate-event sns notification -h
# Generating a sample event with defaults
sam local generate-event sns notification
Getting the correlation id¶
JSON path to correlation id: Sns.MessageId
Response¶
N/A
Resources¶
Input types for Amazon SNS events
- Java SNSEvent
- DotNet - SNSEvent
- Go - SNS
- Python - SNSEvent
- Php - SnsEvent - Composer
bref/bref
Full handler and infrastructure code solutions
- Ruby - sns_event - Gem
jets - Python - on_sns_message - pip
chalice