How to setup AWS SNS and SQS for high availability?
<h2>Problem with SNS</h2>

<p>I'm currently using the python <a href="http://boto3.readthedocs.io/en/latest/index.html" rel="noreferrer" title="boto3 docs">boto3</a> library for SNS (e.g. to create topics, subscribe to topics, send SNS to topics). When I use either a <a href="http://boto3.readthedocs.io/en/latest/guide/resources.html" rel="noreferrer">Resource</a> or a <a href="http://boto3.readthedocs.io/en/latest/guide/clients.html" rel="noreferrer">Client</a>, I have to specify a region (e.g. 'us-west-2', 'us-east-1'). I don't see any built-in options for handling region failover. My question is, how do you setup AWS SNS and SQS for high availability/region failover?</p>

<pre><code>import boto3

client = boto3.client('sns', region_name='us-west-2')
response = client.create_topic(Name='my_new_topic')
client.subscribe(TopicArn='arn:aws:sns:us-west-2:123456789:some-topic', Protocol='HTTP', Endpoint='Some-HTTP-Endpoint')
</code></pre>

<h2>Thoughts on Solution for SNS</h2>

<p>I was thinking of checking the response of the client. For example, the below is the response of a successful <code>client.create_topic()</code>.</p>

<pre><code>{'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': 'adbb58ef-9047-5d44-834d-04a41599eb2b'}, u'TopicArn': 'arn:aws:sns:us-west-2:123456789:some-topic'}    
</code></pre>

<p>If the request didn't succeed, I can retry say X times before attempting a new <code>region_name</code>, but this method seems really hacky (since it would always attempt to try the region that's down first and need to keep switching to new clients).</p>

<h2>Problem with SQS</h2>

<p>If the above were to succeed (where we can handle SNS across regions), now I have multiple SQS Queues that I would need to read from (again with what seems to be a hacky solution of looping through clients with different regions).</p>