Table of contents

Child pages

Related Services

AWS Services

Cloud9

Lightsail

Books / Courses / Tutorials

Books

Amazon Web Services for Dummies

Part I: Getting Started with AWS
Chapter 1: Amazon Web Services Philosophy and Design
Chapter 2: Understanding the AWS API
Chapter 3: Introducing the AWS Management Console
Part II: Diving into AWS Offerings
Chapter 4: Setting Up AWS Storage
Chapter 5: Stretching Out with Elastic Compute Cloud
Chapter 6: AWS Networking
Chapter 7: AWS Security
Chapter 8: Additional Core AWS Services
Part III: Using AWS
Chapter 9: AWS Platform Services
Chapter 10: AWS Management Services
Chapter 11: Managing AWS Costs
Chapter 12: Bringing It All Together: An AWS Application
Part IV: The Part of Tens
Chapter 13: Ten Reasons to Use Amazon Web Services
Chapter 14: Ten Design Principles for Cloud Applications

Courses

YouTube - Academind - AWS Basics

Account Security with IAM

UDemy - AWS Serverless APIs & Apps - A Complete Introduction

Section 1: Getting Started

1. Introduction
2. What is AWS?
3. AWS - A Closer Look (Optional)
4. What is Serverless Development?
5. Does AWS Cost Money?
6. AWS Signup & First Serverless API
  1. He walks through the sign-up process.
  2. He uses the "AWS Services" search box on the main console page to search for "api" and selects "API Gateway".
  3. He clicks "Get Started", and then "New API".
  4. In the UI for the new API, he clicks "Actions" and then "New Resource".
  5. He then clicks "Actions" and "Add Method" to add an HTTP method to the resource he just created.
  6. For the Integration Type he selects "Mock".
  7. In the new Method Execution screen () he clicks "Integration Response", then he clicks the triangular dropdown icon (), then "Body Mapping Templates".
  8. He then clicks "application/json" and puts in a sample JSON response: { "message": "This is working!" }
  9. He then goes to Actions → Deploy API, selects the "Deployment stage" dropdown and selects [New Stage], and names it "dev", and clicks "Save".
  10. The UI now shows a URL, which is the URL we can use for our API. He copies it, appends the resource URL he created (in his case, it was "first-api-test", and when he visits that URL, it shows the JSON response.
7. Why AWS?
8. Course Structure
9. How to get the most out of this course
10. How to use the file downloads

Section 2: The Core Serverless Services

11. Module Introduction
12. An overview of the core serverless services
13. More info about the core services
14. The course project

Section 3: Creating an API with API Gateway & AWS Lambda

15. Module Introduction
16. What is API Gateway?
17. API Gateway: Useful resources and links
18. Accessing the API Gateway Console
19. General API Gateway Features
20. Understanding AWS Permissions (IAM)
21. API-specific Features & Options
22. Introducing the Request-Response Cycle
23. Understanding the Request-Response Cycle
24. Creating a New API
25. Creating a Resource( = URL Path)
26. Handling CORS and the OPTIONS Preflight Request
27. Creating a (HTTP) Method
28. What is AWS Lambda?
29. AWS Lambda: Useful Resources & Links
30. Improved Lambda Console
31. Creating a Lambda Function
32. Lambda Pricing & Uploading Code
33. Connecting Lambda Functions to API Gateway Endpoints
34. Accessing the API from the Web & Fixing CORS Issues
Assignment 1: API Gateway + Lambda Basics
35. Understanding "event" in Lambda Functions
36. Forwarding Requests with "Proxy Integration"
37. Accessing Lambda Logs
38. Getting Started with Body Mapping Templates
39. Extracting Request Data with Body Mapping Templates
40. What's the Idea behind Body Mappings?
41. Understanding Body Mapping Templates
42. Mapping Response Data
43. Using Models & Validating Requests
44. Understanding JSON Schemas
45. Models & Mappings
Assignment 2 - Models and Mappings
46. Next Steps
47. Adding a DELETE Method Endpoint to the API
48. Using Path Parameters
49. What about Query Parameters?
50. Accessing the API from the Web - The Right Way
51. Wrap Up

Section 4: Data Storage with DynamoDB

52. Module Introduction
53. What is DynamoDB?
54. AWS: DynamoDB Useful Resources & Links
55. How DynamoDB Organizes Data
56. NoSQL vs. SQL
57. Using DynamoDB with Lambda
Quiz 1: DynamoDB Concepts
58. Creating a Table in DynamoDB
59. Understanding Read & Write Capacity
60. Creating and Scanning Items
61. What about multiple Databases?
62. Accessing DynamoDB from Lambda
63. Sidenote: How Lambda works behind the Scenes
64. Putting Items into a DynamoDB Table from Lambda
65. Setting Permissions Right
66. Using API Gateway (Request) Data for Item Creation

TODO: Summarize the lectures up to this one.

67. Mapping the Response & Web Testing
68. Scanning Data in DynamoDB from Lambda
69. Improving the IAM Permissions
70. Restructuring Fetched Data in Lambda
71. Getting a Single Item from DynamoDB via Lambda
72. Testing it from the Web & Passing Correct Data
73. Preparing "Delete" Permissions
74. Giving Lambda Logging Rights
75. Deleting Items in DynamoDB via Lambda
76. Mapping DynamoDB Responses
77. Wrap Up

Section 5: Authenticating Users with Cognito and API Gateway Authorizers

78. Module Introduction
79. How to add Authorization to API Gateway
80. Understanding Custom Authorizers (API Gateway)
81. Creating a Custom Authorizer Function
82. Custom Authorizers: Provided Input & Expected Output
83. MUST READ: New UI for setting up Custom Authorizers
84. Using Custom Authorizers
85. Retrieving Users from Custom Authorizers
86. What is AWS Cognito?
87. AWS Cognito: Useful Resources & Links
88. Cognito User Pools and Federated Identities
89. Creating a Cognito User Pool
90. Understanding the Cognito Auth Flow
91. The Example Web App, Angular, and TypeScript
92. Adding Cognito to a Frontend App - Getting Started
93. Using Cognito in iOS or Android Apps
94. Adding Signup to the Frontend App
95. Adding User Confirmation to a Frontend App
96. Adding Signin to a Frontend App
97. Managing User State with Cognito
98. Using a Cognito Authorizer with API Gateway
99. Passing the right User ID to Lambda
100. Using Query Params & Cognito from Lambda
101. More on the Cognito Identity Service Provier
102. Passing Query Params from the Frontend
103. Passing the User ID to the DELETE Endpoint
104. Wrap Up

Section 6: Hosting a Serverless SPA

105. Module Introduction
106. What is S3?
107. AWS S3: Useful Resources & Links
108. Creating an S3 Bucket
109. Uploading the Web App to the Bucket
110. Turning an S3 Bucket into a Static Webserver
111. Setting up Logging
112. Optimizing Content Delivery: What is AWS CloudFront?
113. AWS CloudFront: Useful Resources & Links
114. Setting up a Cloudfront Distribution
115. Finishing the CloudFront Setup
116. Using a Custom Domain: What is Route53?
117. AWS Route53: Useful Resources & Links
118. Registering a Domain
119. Connecting a Domain to a CloudFront Distribution
120. Wrap Up

Section 7: Beyond the Basics - An Outlook

121. Module Introduction
122. Documenting an API
123. Other AWS Lambda Triggers
124. Going Serverless with a Node / Express App (Non-API!)
125. Running Node / Express Apps via Lambda + API Gateway
126. Pros and Cons of Serverless + Express Apps
127. Learn more about AWS Serverless + Express Apps
128. Serverless Apps and Security
129. A Case of a Better Development Workflow
130. Getting to know the Serverless framework
131. More about the Serverless Framework
132. Getting to know SAM (Serverless Application Model) by AWS
133. More about the Serverless Application Model (SAM)
134. Testing Serverless Apps with localstack
135. Other useful AWS Services
136. Wrap Up
137. Useful Resources & Links

Section 8: Course Roundup

138. Roundup

Tutorials



AWS - Connecting to AWS using Putty

Transferring Files to Your Linux Instance Using the PuTTY Secure Copy Client

The PuTTY Secure Copy client (PSCP) is a command-line tool that you can use to transfer files between your Windows computer and your Linux instance. If you prefer a graphical user interface (GUI), you can use an open source GUI tool named WinSCP. For more information, see Transferring Files to Your Linux Instance Using WinSCP.



2009.11.10 - Reddit Blog - Moving to the cloud



Set up a custom domain

Using Custom Domains with Elastic Beanstalk

Namecheap - Setting up a CNAME record (use this to redirect the domain to AWS)


Deploying a Flask app on AWS EB

  1. Create a new virtualenv.
  2. Activate the virtualenv.
  3. Type "python" and hit enter on the regular Windows command prompt to confirm that the correct version of Python starts.
  4. Install Flask from within the virtualenv by typing "python34 -m pip install flask".
  5. Test the app.
    1. Make sure you're in your virtualenv.
    2. Switch to the directory with the flask app.
    3. Try running the app from the virtualenv
      1. Type "python app_name.py" and hit Enter.
      2. Go to http://127.0.0.1:5000/ and see if the app shows up.
  6. Create an AWS EB config file.
    1. Switch to a Cygwin window.
      1. It wasn't working for me from PowerShell...
    2. Type "eb init --region us-west-2".
      1. Get the value of the region by looking up the region for the particular availability zone that shows up in the top-right of your AWS window:
    3. If you have existing apps, it'll prompt you to choose which one to use, or to create a new one.
      1. If you've created the application in the AWS EB UI (on their website), then you can just pick it and you'll be done.
  7. Create / Deploy your app to AWS.
    1. To create:
      1. In the cygwin window, type "eb create" and hit Enter to upload your code.
    2. To deploy:
      1. Same thing except type "eb deploy".
Errors and how to deal with them


Python on AWS Elastic Beanstalk - Gotchas that aren't discussed in the official docs