
Learn to build a fault-tolerant, scalable, and secure AWS architecture for a simple PHP app, step by step through eight modules, from a single instance to a capstone deployment.
Create a basic AWS account and use the free tier for t2 micro EC2 and RDS, terminate resources to avoid costs, and save progress with AMIs.
Deploy a php application on an ec2 instance, connect via ssh and http, clone from public git, install php apache mysql client, deploy to the apache root, and create ami.
Launch an AWS EC2 instance in a default VPC and choose Ubuntu 16.04. Open ports 22 and 80 in the security group and connect via SSH with a private key.
Deploy a php app on an EC2 instance by cloning repo, installing PHP, Apache, and MySQL client with apt-get, installing the AWS SDK via Composer, and moving files to /var/www/html.
Create an ami from your ec2 instance to bake in the php application and deployment, then terminate the instance only after the ami is available and backed by a snapshot.
Explore fault tolerance for a single instance architecture hosting a PHP application, MySQL, and Apache, covering recovery from instance, storage, and availability zone failures with elastic IPs.
Install a MySQL server on an EC2 instance, configure the connection details (username and password) in localdb.php, and test connectivity from the PHP application in a browser, validating success.
Configure a data volume by creating and attaching a 1gb EBS volume in the zone, formatting with makefs, mounting at /data, updating fstab, and verifying with df and mount -a.
Move MySQL data to the data volume by changing the data directory to /data, rsync files, update AppArmor, restart MySQL, and verify with the local db.php page.
Allocate an elastic IP, attach it to an EC2 instance, and verify the public IP is replaced, enabling access and ssh via the elastic IP.
Prepare for recovery by creating an AMI of the root volume with software and configuration, and an EBS snapshot of the data volume to protect data.
Recover from an instance failure by creating a replacement in the same zone, reattaching the data volume and elastic IP, then restarting and verifying with the local db.php page.
Recover from a data volume failure by detaching the failed EBS, restoring a new volume from a snapshot in the same zone, attaching it, and restarting to verify the application.
Recover from an availability zone failure by launching a replacement instance in a healthy zone, using an AMI and snapshots, reattaching data volume, and verifying the application and MySQL connectivity.
Master fault tolerance with a multi-tier architecture that prevents downtime and data loss using RDS multi-AZ for the database, S3 for images, and load balancer with sticky sessions.
Launch a multi-AZ MySQL RDS instance in the same default VPC, connect from an EC2 host using the DNS endpoint, verify connectivity, and prepare the PHP app to use RDS.
Centralize images in an s3 bucket by creating the bucket, uploading an image, making it public, and validating access via the object's URL, then configure it in a PHP application.
Configure the PHP pages to use the S3 image URL and the RDS endpoint, then verify connectivity on two servers across zones via their public IPs.
Create an internet-facing application load balancer in the default VPC, configure two zones, and register EC2 instances to a target group for testing via the DNS name.
Learn how to diagnose non-sticky sessions in a two-server setup behind a load balancer, configure sticky sessions in the target group, and verify persistent user sessions across requests.
Learn how to scale the app layer with auto-scaling groups, handle dynamic load, and centralize sessions in DynamoDB with an IAM-enabled EC2 role to keep servers disposable.
Create and attach an IAM role for an EC2-hosted PHP app to DynamoDB, then replace full access with a least-privilege policy for the sessions table (get, put, update).
Configure an auto-scaling group with your AMI and IAM role, centralizing sessions in DynamoDB, then connect it to the load balancer across two availability zones.
Explore scalability options for the data layer, including the RDS MySQL database and the S3 image store. Implement read replicas and Memcached, and use CloudFront to deliver images globally.
Create an RDS read replica in the same region from the primary with asynchronous replication. Test connectivity from EC2 using replica DNS endpoint (different from primary) with the MySQL client.
Set up a Memcached cluster in ElastiCache, create a subnet group in the default VPC, test connectivity from an EC2 instance via Telnet, and verify with set and get commands.
Set up a CloudFront distribution to cache images from an S3 origin, test using the distribution's DNS name over HTTPS, and verify delivery of the icon.png via the edge network.
Configure and verify a highly available AWS stack by wiring the RDS read replica, Memcached endpoint, and CloudFront URL into three PHP pages, then test connectivity end-to-end.
Deliver private content with signed URLs across CloudFront and S3, using expiry policies and an origin access identity to block unauthorized access.
Learn to restrict direct S3 access by using CloudFront origin access identity, update bucket policy, and verify that only CloudFront can read images while S3 URLs are blocked.
Enable viewer restrictions on CloudFront, sign URLs with a trusted signer self and a CloudFront key pair, including the private key and key pair ID.
Configure the CloudFront private key and key pair ID on an EC2 instance, then generate signed URLs in a PHP page using the AWS SDK to secure image access.
Explore Elastic Beanstalk as a simple deployment platform for web applications, automatically handling code deployment, environments, and versioned updates across single and multi-tier setups, with environment variables.
Clone the PHP application to a local machine, edit it, and create a git archive for Beanstalk deployment. Configure environment variables in Beanstalk to replace hard coded values across versions.
Deploy the hello world PHP app to a single-instance Beanstalk environment by archiving with git archive, uploading the zip, and testing the Hello World page at the environment URL.
Deploy a multi-tier app on Beanstalk by setting RDS and S3 environment variables, creating a git archive, uploading and deploying the version, and verifying RDS connectivity and S3 image access.
Deploy a scalable AWS PHP app by configuring environment variables for CloudFront image, RDS read replica, Memcached, and DynamoDB; attach an IAM role; archive and deploy, then verify four pages.
Learn to deploy the final signed URL version by storing the CloudFront private key in S3, configuring Beanstalk to fetch and install it, and updating IAM policies and environment variables.
Design a secure network by creating a non-default VPC with private subnets in multiple zones and public subnets, plus subnet groups, nested security groups, and a DynamoDB VPC endpoint.
Create a vpc with two public subnets in zones a and b (10.0.0.0/24 and 10.0.1.0/24) and two private subnets (10.0.2.0/24, 10.0.3.0/24), then verify routing via route tables and internet gateway.
Create nested security groups for a highly available, scalable AWS stack, configuring load balancer, web servers, memcache, and RDS access with least privileges rules.
Create private subnet groups for Memcached and RDS in your VPC to ensure these resources launch only in private subnets, preventing exposure in public subnets.
Configure a VPC DynamoDB service endpoint for private subnets, enabling restricted get, put, and update item access to the sessions table from EC2, with route-table updates.
Verify AWS networking by testing end-to-end connectivity: load balancer to EC2, EC2 to DynamoDB, mem cached cluster, and RDS, across private and public subnets with VPC endpoints and security groups.
Build a highly available, scalable aws stack by integrating vpc subnets, memcached, rds multi-az with read replicas, cloudfront and s3 with signed urls, and Elastic Beanstalk.
A look at core Amazon Web Services (AWS) services with an emphasis on implementation and skill development. You will start with a simple web application on a single Elastic Cloud Compute (EC2) instance and improve the stack step by step by adding high availability, fault-tolerance, scalability, security and ease of deployment. The course has 8 modules and a capstone project, code, and commands required for the project are included.
You will learn about these AWS services - Elastic Cloud Compute (EC2), Elastic Block Store (EBS), Relational Database Service (RDS), Simple Storage Service (S3), DynamoDB, Identity and Access Management (IAM), ElastiCache, CloudFront, Elastic Beanstalk and Virtual Private Cloud (VPC).
You will use these important aspects of AWS:
- Infrastructure: AWS Regions and Availability Zones.
- EC2: Amazon Machine Images, EBS Snapshots, Application Load Balancers, Sticky Sessions, Auto-Scaling Groups.
- Databases: RDS Read Replicas, RDS Multi-AZ Deployment, Memcached clusters.
- Network: Public and Private Subnets, VPC Service Endpoints, Security Groups, NAT Gateways.
- Security: IAM Roles, IAM policies, S3 bucket policies, S3 Access Control Lists, CloudFront signed URLs.
- App development: AWS SDK.
You will implement these AWS best practices:
- Configure separate root and data EBS volumes.
- Create snapshots of EBS data volumes.
- Create Amazon Machine Images of your app servers.
- Use multiple instances and multiple zones.
- Centralize sessions, content and the database.
- Use auto-scaling groups for your app servers.
- Off-load database requests to read replicas or to in-memory databases.
- Use a Content Distribution Network to deliver content to users around the world.
- Use signed URLs when delivering private content.
- Configure security using the principle of least privileges.
- Use an automation platform for frequent deployments.
You will understand AWS best practices for typical web app functions:
- Session management.
- Content delivery.
- Content security.
- Databases.