Front-End Web & Mobile

Using Different AWS Regions with the AWS Mobile SDKs

Version 2 of the AWS Mobile SDK

  • This article and sample apply to Version 1 of the AWS Mobile SDK. If you are building new apps, we recommend you use Version 2. For details, please visit the AWS Mobile SDK page.
  • This content is being maintained for historical reference.

The services supported by the AWS Mobile SDKs are available in multiple regions world-wide. The purpose of this post is to demonstrate how you can get the SDKs to access these different AWS regions. To learn more about AWS’ regions, please refer to the Regions and Endpoints document, which details the regions where each AWS service is accessible and provides the endpoint necessary for accessing the service in a particular region. By default, service classes in either of the AWS Mobile SDKs will point to the US East (Northern Virginia), or us-east-1, region. The code samples below demonstrate how to get a service class to access the region you prefer.

Regions with the AWS SDK for iOS

For the AWS SDK for iOS, using a service in a specific region is accomplished by setting the endpoint in the service client. The following code snippet demonstrates how to do this:

HAQMSNSClient *snsClient = [[HAQMSNSClient alloc] 
        initWithAccessKey:ACCESS_KEY_ID withSecretKey:SECRET_KEY];
snsClient.endpoint = @"http://sns.us-west-2.amazonaws.com";

To simplify this process, the AWS SDK for iOS contains a helper class, HAQMEndpoints. This class provides a method for each service and an enumeration for each region. So the code for specifying the region with the helper class looks as follows:

HAQMSNSClient *snsClient = [[HAQMSNSClient alloc] 
        initWithAccessKey:ACCESS_KEY_ID withSecretKey:SECRET_KEY];
snsClient.endpoint = [HAQMEndpoints snsEndpoint:US_WEST_2];

Here’s a sample of the code using a different region.

HAQMSNSClient *snsClient = [[HAQMSNSClient alloc] 
        initWithAccessKey:ACCESS_KEY_ID withSecretKey:SECRET_KEY];
snsClient.endpoint = [HAQMEndpoints snsEndpoint:US_EAST_1];

Regions with the AWS SDK for Android

For the AWS SDK for Android, specifying a specific region is similarly done by setting the endpoint in the service class as follows:

HAQMSNSClient snsClient = new  HAQMSNSClient( credentials );
snsClient.setEndpoint( "http://sns.us-west-2.amazonaws.com" );

Another way to set the region for the Android SDK is to utilize the Region class as follows:

HAQMSNSClient snsClient = new HAQMSNSClient( credentials );
snsClient.setRegion( Region.getRegion( Regions.US_WEST_2 ) );

Selecting a different region for a service can be trivially done as shown here:

HAQMSNSClient snsClient = new HAQMSNSClient( credentials );
snsClient.setRegion( Region.getRegion( Regions.US_EAST_1 ) );

Regions and HAQM S3

For HAQM S3, creating a bucket requires an additional step as noted in the Buckets and Regions documentation for HAQM S3. Additionally, although HAQM S3 will automatically redirect requests to the appropriate region, using the endpoint will avoid this redirect and improve latency as noted in HAQM S3’s documentation.

Summary

We hope this blog post makes it clear how to use the various AWS regions with the AWS Mobile SDKs. As always, please let us know what you think by leaving a comment below.