AWS Lambda Publish Messages to SNS in cross region

Viewed 40

I have a Lambda function (east-us-1) that needs to publish messages to SNS topics in both (east-us-1) & (eu-central-1) regions. Is this possible?

Here is my code snippet. Can someone help on how can I achieve this? I am surprised to see that the boto3 client documentation says "You can publish messages only to topics and endpoints in the same Amazon Web Services Region" Link Here:

from __future__ import print_function

import json
import urllib
import boto3

print('Loading message function...')


def send_to_sns(message, context):

    # This function receives JSON input with three fields: the ARN of an SNS topic,
    # a string with the subject of the message, and a string with the body of the message.
    # The message is then sent to the SNS topic.
    #
    # Example:
    #   {
    #       "topic": "arn:aws:sns:REGION:123456789012:MySNSTopic",
    #       "subject": "This is the subject of the message.",
    #       "message": "This is the body of the message."
    #   }

   
    sns = boto3.client('sns')
    sns.publish(
        TopicArn=message['topic'],
        Subject=message['subject'],
        Message=message['body']
    )

    return ('Sent a message to an Amazon SNS topic.')

My code throws the following error when SNS is in different region

{
    "response": {
        "stackTrace": [
            [
                "/var/task/lambda_function.py",
                28,
                "send_to_sns",
                "Message=message['body']"
            ],
            [
                "/var/runtime/botocore/client.py",
                357,
                "_api_call",
                "return self._make_api_call(operation_name, kwargs)"
            ],
            [
                "/var/runtime/botocore/client.py",
                676,
                "_make_api_call",
                "raise error_class(parsed_response, operation_name)"
            ]
        ],
        "errorType": "InvalidParameterException",
        "errorMessage": "An error occurred (InvalidParameter) when calling the Publish operation: Invalid parameter: TopicArn"
    }
}
0 Answers
Related