You are developing a new mobile application and are considering storing user preferences in
AWS. This would provide a more uniform cross-device experience to users using multiple mobile
devices to access the application. The preference data for each user is estimated to be 50KB in
size. Additionally, 5 million customers are expected to use the application on a regular basis.
The solution needs to be cost- effective, highly-available, scalable and secure.
How would you design a solution to meet the above requirements?
A.
Setup an RDS MySQL instance with multiple read replicas in 2 availability zones to store the user
preference data.
The mobile application will query the user preferences from the read replicas. Leverage the
MySQL user management and access privilege system to manage security and access
credentials.
B.
Setup an RDS MySQL instance in 2 availability zones to store the user preference data.
Deploy a public facing application on a server in front of the database to manage security and
access credentials.
C.
Store the user preference data in S3. Setup a DynamoDB table with an item for each user and an
item attribute pointing to the user’s S3 object.
The mobile application will retrieve the S3 URL from DynamoDB and then access the S3 object
directly.
Utilize STS, Web Identity Federation, and S3 ACLs to authenticate and authorize access.
D.
Setup a DynamoDB table with an item for each user having the necessary attributes to hold the
user preferences.
The mobile application will query the user preferences directly from the DynamoDB table.
Utilize STS, Web Identity Federation, and DynamoDB Fine Grained Access Control to
authenticate and authorize access.
Explanation:
https://aws.amazon.com/blogs/aws/fine-grained-access-control-for-amazon-dynamodb/
Here are some of the things that you can build using fine-grained access control:
A mobile app that displays information for nearby airports, based on the user’s location. The app
can access and display attributes such airline names, arrival times, and flight numbers. However,
it cannot access or display pilot names or passenger counts.
A mobile game which stores high scores for all users in a single table. Each user can update their
own scores, but has no access to the other ones.