AWS development tools

setup

AWS toolkit for VS code

code sharing

git is ok, but hard to work on the same code.
AWS cloud9 is IDE for writing code shared. Browser based, see in real time others working.

Security

Can use cloud9 console to block other connections for remote collaborative working.
CI/CD pipeline: continuous integration continuous development

code monitoring in production

To use,

improving code

build, review, test, deploy, measure, improve
Amazon Codeguru: ML service to improve quality, find expensive bits of code.

Infrastructure as code

tools

yaml is easier than json, but still a problem.
Terraform is similar to json but more readable.
But how about using python to set up infrastructure rather than static files.

AWS Cloud development kit (CDK)

model infrastructure as reusable components.
Good time saving tool.
supports lots of languages

Role based access control

user / group based permissions.
Create user, create login profile
aws iam create-user..
attach policy to be able to change password.
Create a group "everyone" for multiple users
add user to the group
aws iam attach-group-policy
better to attach permissions to the group.
create "admins" group
attach policy to this group to grant admin access
create "developers" group
attach a specific policy to this.
so multiple groups with multiple iam policies.
Then can add Bob to admins group and developers group.
Ability to add users to groups, users inherit permissions from group.
But this is not great because Admin access at all times.

Principal of least privilege: should have the bare minimus privileges to perform the function and only during the time needed to perform the function.

Solution is roles based access control, not just users and groups.
Best to make users take a specific action to escalate their privileges, so step into a role. e.g. temporarily set into an admin role.
Give permission to the group to assume a role.

Use the "assume role" api

Example

To assume roles in cli:

Basically stop attaching policies and resources to groups, instead create roles and allow them to assume roles.

AWS Services and how they work together

About 130 AWS services: compute, analytics, storage, network, development, etc.

Facebook example architecture

For example, build a facebook application, what do you need?

Implementation on AWS

AWS Application services to manage these and allow integration

API gateway to generate a RestAPI
IAM for Access permissions between all services
KMS to encrypt data across all EBS, S3, RDS etc.
ACM (amazon Certificate manager) to manage certificates for access (like SSL)
WAF: wave application firewalls to prevent attacks on your application. Deploy on cloudfront or in front of API gateways. AWS inspector: looks for security vulnerabilities

AWS Dev and Devops services

Don't want to deploy by hand!
AWS CloudFormation: auto deploy. Takes a template and creates infrastructure from scratch.
AWS Code Commit: Repository service like Git.
AWS CodeBuild: builds and runs unit tests, produces artifacts.
AWS Code Deploy: puts the code artifacts into EC2 instances
AWS CodePipeline: Devops CI / CD (continuous integration / continuous development) runs CodeCommit, CodeBuild, CodeDeploy all automated
AWS Codestar: like Jira and project management, issue tracking, continuous delivery.

AWS Networking

What you need to know:

AWS Certified Cloud Practitioner

https://www.youtube.com/watch?v=dUXZUAj_fCE

Exam guide, sample questions as an amazon resource

https://d1.awsstatic.com/training-and-certification/docs-cloud-practitioner/AWS-Certified-Cloud-Practioner_Sample_Questions_v1.1_FINAL.PDF

https://d1.awsstatic.com/training-and-certification/Docs%20-%20Cloud%20Practitioner/AWS%20Certified%20Cloud%20Practitioner_Exam_Guide_v1.4_FINAL.PDF

register at www.aws.training

No penalty for incorrect answers Look at aws web site, documentation, forums.

Whitepapers: overview of services, architecting for the cloud, aws support plans etc.

https://www.aws.training/Details/Curriculum?id=27076