AWS Serverless REST APIs for Java Developers. CI/CD included
AWS Serverless is probably the quickest way to build a very stable REST APIs that scale to serve millions of users. A very simple Mock API can be created and deployed in minutes. An API that uses AWS Lambda compute service will take longer but how much longer will depend on the business logic that you need to write. In this video course, you will learn what is REST API and how to create one using AWS Serverless Services.
More
You will learn in detail how to use Amazon API Gateway to create REST APIs, and AWS Lambda Compute Service to execute business logic. The course is designed for absolute beginners, so you do not need to have any experience with AWS Serverless.
By the end of this course, you will be able to:
Create RESTful API endpoints,
Build and deploy API with AWS SAM,
Validate HTTP request body and request parameters,
Transform HTTP request body into a different model,
Transform HTTP response JSON into a different one,
Deploy APIs into different stages,
Perform Canary Release Deployments and shift traffic between different versions of APIs,
Publish multiple versions of Lambda functions and shift traffic between these functions,
Document and Export REST API,
Implement User Sign-up with Amazon Cognito,
Learn to use Cognito Authorizer to control who can access your API in Amazon API Gateway,
Implement custom Lambda Authorizer that validates JWT,
Secure API endpoints with API Keys and learn to configure requests Throattling and Quota,
Unit Test AWS Lambda functions,
Build CI/CD Pipeline using AWS CodeCommit, AWS CodeBuild and AWS CodePipeline developer tools.
If you want to learn how to build REST APIs quickly, without starting, configuring, and managing any servers, then this course is for you.
Watch Online AWS Serverless REST APIs for Java Developers. CI/CD included
# | Title | Duration |
---|---|---|
1 | Introduction | 02:11 |
2 | What is an API? | 05:33 |
3 | Introduction to REST API | 04:07 |
4 | REST API Resources & URIs | 06:16 |
5 | API Operations and HTTP methods | 02:59 |
6 | The multi-tier architecture and Microservices | 06:57 |
7 | AWS Serverless services overview | 08:58 |
8 | AWS Serverless architecture example | 06:07 |
9 | Introduction | 05:43 |
10 | Import from Swagger or Open API 3 | 08:21 |
11 | Method execution flow overview | 06:56 |
12 | Method request overview | 03:23 |
13 | Integration request overview | 02:56 |
14 | Integration response overview | 01:36 |
15 | Method response overview | 02:38 |
16 | Trying how it works | 03:02 |
17 | Introduction | 02:52 |
18 | Creating a new API | 02:06 |
19 | Creating a new Resource | 02:58 |
20 | Creating HTTP Method | 04:31 |
21 | Returning Mock Data | 04:00 |
22 | Path parameter | 03:52 |
23 | Reading the path parameter | 04:13 |
24 | Query String Parameters | 01:29 |
25 | Reading Query String Parameter in a Mapping template | 04:07 |
26 | Deploying Mock API | 04:56 |
27 | Documenting API | 07:05 |
28 | Introduction | 00:50 |
29 | Export API and Test with Swagger | 05:59 |
30 | Export API with Gateway Extensions | 03:43 |
31 | Export API and Test with Postman | 03:27 |
32 | Validating Request Parameters & Headers | 04:46 |
33 | Validating Request Body - Creating a Model. | 05:41 |
34 | Associate Model with HTTP Request | 01:39 |
35 | Validating Request Body - Trying how it works. | 02:00 |
36 | Function as a Service(SaaS) | 01:34 |
37 | Lambda function & other Services | 06:13 |
38 | Anatomy of a Java Lambda function handler | 02:16 |
39 | Lambda Execution Environment | 04:51 |
40 | Cold start, warm start & provisioned concurrency | 03:19 |
41 | Pricing | 03:39 |
42 | Creating new Maven project | 02:05 |
43 | Adding Maven dependencies | 02:24 |
44 | Maven Shade Plugin | 02:51 |
45 | Creating Lambda function | 03:01 |
46 | Reading Request returning Response | 04:32 |
47 | Creating function in AWS Console | 03:03 |
48 | Deploying Lambda function | 02:50 |
49 | Testing Lambda function with Input Template | 02:50 |
50 | Create new API project | 01:02 |
51 | Assigning Lambda function to API Endpoint | 05:59 |
52 | Introduction | 03:25 |
53 | Creating a new IAM User | 05:15 |
54 | Installing AWS SAM | 04:33 |
55 | Installing AWS CLI | 03:40 |
56 | Configure AWS Credentials on your computer | 02:19 |
57 | Creating a new project with SAM | 04:54 |
58 | Refactor project to use a different name | 04:26 |
59 | Read User Details JSON and return HTTP Response | 10:21 |
60 | SAM template file overview | 05:29 |
61 | SAM template - Resources | 07:23 |
62 | SAM template - Outputs | 07:13 |
63 | The event.json file | 02:32 |
64 | Invoke Remote Lambda function from local computer | 01:56 |
65 | Debug Lambda function locally | 03:37 |
66 | Deploy Lambda function to AWS | 06:43 |
67 | Invoke public API Endpoint | 02:30 |
68 | Viewing logs | 04:51 |
69 | Delete AWS SAM application | 03:13 |
70 | Introduction | 02:29 |
71 | Java Map instead of APIGatewayProxy Event objects | 03:17 |
72 | Deploying application to AWS | 01:37 |
73 | Creating a new Request Model | 02:32 |
74 | Creating a new Response Model | 01:21 |
75 | Transforming HTTP Request Payload | 08:35 |
76 | Reading New Request Model | 01:53 |
77 | Trying how it works | 04:53 |
78 | Response Mapping Template | 04:39 |
79 | Configure Method Response | 01:29 |
80 | Trying how the Response Mapping | 02:15 |
81 | Reading with Query String Parameters & Headers | 04:10 |
82 | Introduction | 04:10 |
83 | Deploy project | 01:58 |
84 | Customize the Default API Gateway Error Response | 10:34 |
85 | Trying how it works | 02:52 |
86 | Proxy Integration. Causing a 500 Server Error. | 03:05 |
87 | Proxy Integration. Handle Exception and return custom JSON. | 02:09 |
88 | Trying how it works | 02:55 |
89 | Deploy and disable Proxy Integration | 04:13 |
90 | Response code & Lambda Error Regex for 500 status code | 05:02 |
91 | Mapping template for 500 status code | 03:49 |
92 | Lambda Error Regex for Different Error | 04:47 |
93 | Handle multiple exceptions | 05:33 |
94 | Introduction | 02:09 |
95 | Deploying new code | 02:56 |
96 | Publishing a new version | 03:35 |
97 | Assign new version to API endpoint | 02:30 |
98 | Publish version #2 | 03:18 |
99 | Lambda Aliases - Introduction | 02:19 |
100 | Creating an Alias | 03:16 |
101 | Using Alias in API Gateway | 02:10 |
102 | Trying how the Lambda Alias works | 03:43 |
103 | Shift traffic between two lambda versions | 03:47 |
104 | Introduction | 04:19 |
105 | Create Canary | 03:10 |
106 | Deploy changes to Canary | 02:14 |
107 | Trying how it works | 01:40 |
108 | Promoting and Deleting Canary | 02:09 |
109 | Creating Environment Variables in AWS SAM | 05:03 |
110 | Reading Environment Variables | 02:15 |
111 | Trying how it works | 03:42 |
112 | Creating Lambda environment variables in AWS Web Console | 01:13 |
113 | Environment variables encryption options | 01:41 |
114 | Creating new encryption key | 03:14 |
115 | Encrypting environment variables with AWS KMS key | 02:31 |
116 | Decrypting Environment Variables | 07:04 |
117 | Trying how it works | 01:55 |
118 | Introduction | 03:19 |
119 | User pool - Name and Attributes step | 04:38 |
120 | User pool - Policies step | 01:19 |
121 | User pool - MFA and verifications step | 01:48 |
122 | User pool - Message customizations step | 03:51 |
123 | User pool - Tags and Devices steps | 01:41 |
124 | User pool - Creating an App Client | 03:20 |
125 | User pool - Final steps | 01:55 |
126 | Adding AWS SDK Cognito Dependencies | 04:57 |
127 | Create User - Reading Request Body | 02:20 |
128 | Creating CognitoUserService and CreateUser function | 01:45 |
129 | Working on Cognito SignUpRequest | 06:35 |
130 | Generating Secret Hash value | 04:58 |
131 | Creating and using the CognitoIdentityProviderClient | 05:11 |
132 | Calling the createUser() function | 05:57 |
133 | User Sign-up. Trying how it works. | 05:42 |
134 | Creating the Confirm User Lambda function | 01:24 |
135 | Implementing Confirm User Signup function | 04:57 |
136 | Calling the Confirm User method | 06:06 |
137 | Define Confirm User Signup function in AWS SAM template | 02:51 |
138 | Encrypting environment variables | 07:52 |
139 | Decrypting Environment Variables in Java code | 04:23 |
140 | Updating Encryption & Decryption KMS Key | 01:58 |
141 | Trying how it works | 01:58 |
142 | Creating LoginUserHandler | 01:36 |
143 | Define LoginUserHandle in AWS SAM template | 01:52 |
144 | Implementing User Login method in the service class | 08:25 |
145 | Calling User Login method | 04:47 |
146 | Trying how it works | 02:47 |
147 | Error message as jSON rather than plain text | 08:16 |
148 | Creating a User Group | 06:03 |
149 | Implementing AddUserToGroup() method | 03:21 |
150 | Calling the AddUserToGroup() method | 05:56 |
151 | Encrypting Environment Variable | 03:53 |
152 | Define AddUserToGroup function in AWS SAM template | 07:47 |
153 | Trying how the Add User To Group function works | 05:21 |
154 | Creating GetUserHandler Lambda function | 02:23 |
155 | Define GetUserHandler function in AWS SAM template | 03:08 |
156 | Secure API endpoint with Cognito Authorizer | 03:06 |
157 | Using ID token with Cognito Authorizer | 04:33 |
158 | Implementing Get User Details method | 05:09 |
159 | Calling the Get User method | 03:33 |
160 | Trying how it works | 01:53 |
161 | Validating required HTTP header | 03:28 |
162 | Import Open API definition into SAM template | 10:23 |
163 | Introduction | 03:55 |
164 | Starter project overview & source code | 05:18 |
165 | Creating Lambda Authorizer in API Gateway | 04:42 |
166 | Import Open-API configuration into AWS SAM template | 02:49 |
167 | Lambda authorizer Output | 04:06 |
168 | Generating Policy Document | 09:23 |
169 | Trying how it works | 02:02 |
170 | Adding JWT validation dependencies | 02:28 |
171 | Implement the JWT validation function | 07:16 |
172 | Validating the JWT | 04:40 |
173 | Trying how JWT validation works | 03:05 |
174 | Implementing the GetUserByUsername function | 06:02 |
175 | Add Policy to allow the AWS SAM template file | 02:34 |
176 | Calling getUserByUsername() from handleRequest() method | 04:02 |
177 | Trying how it works | 02:33 |
178 | Introduction | 03:10 |
179 | Create a new API Key | 01:57 |
180 | Create a Usage Plan | 03:23 |
181 | Secure API Endpoint with API Key | 02:57 |
182 | Trying how it works | 02:17 |
183 | Introduction | 01:53 |
184 | Testing Pyramid | 02:47 |
185 | F.I.R.S.T principle | 03:37 |
186 | Adding JUnit Test Dependencies | 03:42 |
187 | Running and failing a test case | 04:39 |
188 | Naming a Unit Test Method | 03:17 |
189 | Arrange, Act, Assert | 04:00 |
190 | Unit Test Lifecycle methods | 03:22 |
191 | Creating Mock Objects | 04:52 |
192 | Mocking APIGatewayProxyRequestEvent | 03:19 |
193 | Mocking Context object | 03:24 |
194 | Mocking CognitoUserService class | 03:22 |
195 | Invoke function under test | 02:29 |
196 | Assertions for the CreateUserHandler Unit Test | 07:31 |
197 | Centralize property names | 03:26 |
198 | Test if function returns error message if request body is empty | 06:47 |
199 | Test if function returns error message when AwsServiceException takes place | 09:01 |
200 | Introduction to AWS CodeCommit | 03:09 |
201 | Git Branches | 03:22 |
202 | Creating Local Git Repository | 03:23 |
203 | Git Ignore file | 03:55 |
204 | Commit files to main branch | 02:38 |
205 | Creating Remote Git Repository | 01:26 |
206 | Creating User Credentials | 04:43 |
207 | Push Initial Commit to a Remote Git Branch | 03:46 |
208 | Push New Updates to a Remote Git Branch | 04:30 |
209 | Creating a Pull Request | 02:37 |
210 | Approving and Merging Pull Request | 03:11 |
211 | Introduction | 02:18 |
212 | Creating a new S3 bucket | 02:16 |
213 | Creating a BuildSpec file | 08:10 |
214 | Commit BuildSpec file to main branch | 01:53 |
215 | Creating a new CodeBuild project | 08:01 |
216 | Fixing a Unit Test method | 02:22 |
217 | Running Code Build | 02:53 |
218 | Introduction | 02:40 |
219 | CloudFormation Role | 06:29 |
220 | Creating CodePipeline to Deploy AWS Lambda | 07:48 |
221 | Execute a Change Set | 04:12 |
222 | Making code change that triggers pipeline | 03:06 |