Section 9: AWS CICD: CodeCommit, CodePipeline, CodeBuild, CodeDeploy Flashcards
What does CI/CD stand for?
Continuous Integration / Continuous Delivery
What does Continuous Integration look like?
A developer pushes code to online repository
A testing/build server checks the code as itโs pushed
The developer gets feedback about the tests that have passed/failed
What are the benefits of CI?
Find bugs early, fix bugs
Deliver faster as the code is tested
Deploy often
Happier developers
What are the benefits of CD?
Shift away from โone release every 3 monthsโ to โ5 releases a dayโ
What does the development process look like when doing CICD?
Code Build Test Deploy Provision
What is AWS CodeCommit?
AWS CodeCommit is a fully-managed source control service that hosts secure Git-based repositories.
What is the size limit of CodeCommit repos?
No size limit
With what CI tools can CodeCommit be integrated with?
AWS CodeBuild, Jenkins, other
What authentication options are available to establish a connection to AWS CodeCommit from your workstation? (2)
SSH Keys
HTTPS
How to setup SSH authentication to establish a connection to AWS CodeCommit?
By setting your public ssh-rsa key in your IAM user security credentials tab and creating a โconfigโ file in your .ssh directory on your machine with the following content:
Host git-codecommit.*.amazonaws.com
User XXXXXXXXXXXXXXXXX
IdentityFile ~/.ssh/codecommit_rsa
Where โXXXXXXXXXXXXXXXXXโ is your SSH key ID (provided by AWS when you upload your SSH public key) and โcodecommit_rsaโ is the name of the file containing your private SSH key.
How to setup HTTPS authentication to establish a connection to AWS CodeCommit?
By generating HTTPS git credentials in your IAM user security credentials tab and entering the username and password AWS provides you with in the Windows popup which will appear when doing your first git clone.
Is there a distinction in the URL to use when using SSH or HTTPS when cloning from git?
Yes, HTTPS and SSH have different urls.
What manages authorization in AWS CodeCommit?
IAM Policies manage user / roles rights to repositories
Is there encryption in CodeCommit?
Yes, repos are automatically encrypted at rest using KMS and in transit (can only use HTTPS or SSH - both secure)
How to provide cross-account access to your Git repositories in AWS CodeCommit?
Setup an IAM Role in your account and tell him to use STS cross-account access to assume that role (with AWS STS AssumeRole API)
What is the difference between triggers and notifications in CodeCommit?
Triggers are triggered by branch creation, deletion, or pushes to an existing branch. They can publish (with custom data) to an SNS topic or call an AWS Lambda function directly
Notifications are triggered by CloudWatch Events and get published to SNS topics you define
What is AWS CodePipeline?
AWS CodePipeline is a fully managed continuous delivery service. It automates the build, test, and deploy phases of your release process every time there is a code change.
What are some deploy options in CodePipeline?
AWS CodeDeploy, Beanstalk, CloudFormation, ECS, etc.
What are pipelines essentially made of?
Stages
What are stages essentially made of?
Action groups
What do action groups represent?
Parallel actions
Can you have more than one action group per stage?
Yes
In what order are action groups executed in a stage?
In sequence
What sources are available in CodePipeline?
CodeCommit, GitHub, Amazon S3, Amazon ECR, Bitbucket
What is the output of each stage in a CodePipeline?
Artifacts
Where are artifacts stored?
In an S3 bucket
Where do CodePipeline state changes events happen?
In AWS CloudWatch Events
How to set up events for failed pipelines and cancelled stages?
By creating corresponding event rules in CloudWatch
What will happen to the pipeline if a stage fails?
It will stop and you will get information in the console
How to audit AWS API calls?
By using AWS CloudTrail
What should you check if CodePipeline canโt perform an action?
Make sure the IAM Service Role attached does have enough permissions (IAM Policy)
What is AWS CodeBuild
A fully managed build service. An alternative to other build tools such as Jenkins.