📖 Scenario: You are setting up a simple database for a small web application. You want to launch an Amazon RDS instance to store your app's data securely and reliably.
🎯 Goal: Create an AWS CloudFormation template that launches a basic Amazon RDS instance with the specified settings.
📋 What You'll Learn
Use AWS CloudFormation YAML syntax
Create an RDS DB instance resource
Specify DB instance class, engine, and allocated storage
Set master username and password parameters
Add a DB subnet group referencing two subnets
Ensure the DB instance is publicly accessible
💡 Why This Matters
🌍 Real World
Launching an RDS instance is a common task when setting up backend databases for web applications or services in AWS.
💼 Career
Cloud architects and DevOps engineers often write CloudFormation templates to automate infrastructure deployment, including databases like RDS.
Progress0 / 4 steps
1
Create the CloudFormation template skeleton
Start by creating a CloudFormation template with the AWSTemplateFormatVersion set to '2010-09-09' and an empty Resources section.
AWS
Hint
CloudFormation templates start with AWSTemplateFormatVersion and have a Resources section.
2
Add parameters for DB credentials
Add two parameters named DBUsername and DBPassword under Parameters. Set DBUsername as a string with default admin. Set DBPassword as a string with NoEcho true to hide the password.
AWS
Hint
Parameters let you input values when launching the stack. Use NoEcho: true to keep passwords hidden.
3
Add a DB subnet group resource
Add a resource named DBSubnetGroup of type AWS::RDS::DBSubnetGroup. Set its DBSubnetGroupDescription to 'Subnet group for RDS' and SubnetIds to a list containing subnet-12345678 and subnet-87654321.
AWS
Hint
DB subnet groups tell RDS which subnets to use for the database.
4
Add the RDS DB instance resource
Add a resource named MyDBInstance of type AWS::RDS::DBInstance. Set its DBInstanceClass to db.t3.micro, Engine to mysql, AllocatedStorage to 20, MasterUsername to !Ref DBUsername, MasterUserPassword to !Ref DBPassword, DBSubnetGroupName to !Ref DBSubnetGroup, and PubliclyAccessible to true.
AWS
Hint
This resource launches the actual RDS database instance with your settings.
Practice
(1/5)
1. What is the main purpose of launching an Amazon RDS instance?
easy
A. To set up a virtual private network
B. To manually configure hardware for a database
C. To create a managed cloud database quickly
D. To write application code for database access
Solution
Step 1: Understand RDS service purpose
Amazon RDS is a managed service that simplifies database setup and management.
Step 2: Identify the main benefit
It allows quick creation of cloud databases without manual hardware setup.
Final Answer:
To create a managed cloud database quickly -> Option C
Quick Check:
RDS = managed cloud database creation [OK]
Hint: RDS means managed database, not manual hardware setup [OK]
Common Mistakes:
Confusing RDS with manual server setup
Thinking RDS is for network configuration
Assuming RDS is for writing application code
2. Which of the following is a required parameter when launching an RDS instance using AWS Console?
easy
A. Database engine type (e.g., MySQL, PostgreSQL)
B. Operating system version of the server
C. IP address of the client machine
D. Number of application users
Solution
Step 1: Identify launch parameters for RDS
When launching RDS, you must choose the database engine type like MySQL or PostgreSQL.
Step 2: Exclude unrelated parameters
Operating system, client IP, or app users are not required inputs for RDS launch.
Final Answer:
Database engine type (e.g., MySQL, PostgreSQL) -> Option A
Quick Check:
Engine type is mandatory for RDS launch [OK]
Hint: Pick the database engine type, not unrelated details [OK]
Common Mistakes:
Confusing OS version with database engine
Providing client IP instead of DB settings
Thinking user count is a launch parameter
3. Consider this AWS CLI command snippet to launch an RDS instance:
What will be the allocated storage size of the created RDS instance?
medium
A. Not specified, default used
B. 10 GB
C. 100 GB
D. 20 GB
Solution
Step 1: Locate storage parameter in command
The parameter --allocated-storage 20 sets storage size to 20 GB.
Step 2: Confirm no other storage size overrides
No other storage size is specified, so 20 GB is used.
Final Answer:
20 GB -> Option D
Quick Check:
Allocated storage = 20 GB [OK]
Hint: Look for --allocated-storage value in command [OK]
Common Mistakes:
Assuming default storage without checking parameter
Confusing instance class with storage size
Ignoring the explicit storage size given
4. You tried launching an RDS instance but got an error: "InvalidParameterCombination: Storage size must be at least 20 GB for db.t3.micro". Your command was:
A. Allocated storage size is below the minimum for the instance class
B. Master username is invalid
C. Engine type postgres is not supported
D. DB instance identifier is missing
Solution
Step 1: Analyze error message details
The error says storage must be at least 20 GB for db.t3.micro, but 10 GB was given.
Step 2: Check command parameters
The command uses --allocated-storage 10, which is too small for this instance class.
Final Answer:
Allocated storage size is below the minimum for the instance class -> Option A
Quick Check:
Storage size too small causes error [OK]
Hint: Check minimum storage size for instance class [OK]
Common Mistakes:
Ignoring minimum storage requirements
Blaming username or engine type incorrectly
Missing required parameters in command
5. You want to launch an RDS instance with automatic backups enabled and a backup retention period of 7 days. Which configuration option should you set during launch to achieve this?
hard
A. Set MultiAZ to true
B. Set BackupRetentionPeriod to 7 and enable automatic backups
C. Set StorageEncrypted to true
D. Set PubliclyAccessible to true
Solution
Step 1: Identify backup settings for RDS
Automatic backups require enabling backups and setting the retention period.
Step 2: Match configuration options
BackupRetentionPeriod controls how many days backups are kept; enabling backups is necessary.
Step 3: Exclude unrelated options
MultiAZ is for high availability, StorageEncrypted for encryption, and PubliclyAccessible for network access.
Final Answer:
Set BackupRetentionPeriod to 7 and enable automatic backups -> Option B