AWS Developer Tools allows you to "Host code, build, test, and deploy your applications to AWS". This article focuses on CodeBuild (for building deployable artefacts), CodeDeploy (for deploying to environments), CodePipeline (for defining and running build pipelines) and CodeCommit (an AWS-hosted Git repository solution).
These four tools come with some significant advantages:
- Excellent IAM integration within AWS for highly reliable security.
- All configuration is defined as code.
- All builds are done in Docker containers.
- Builds and code hosting can be moved under the control of the developer tools, removing reliance on third-party CI providers and source repositories.
There are some significant shortcomings which unfortunately make these tools a poor choice for many scenarios, and they're not recommended as a default choice.
- The user experience is very poor: the components are only loosely integrated, requiring hopping between these services as well as CloudWatch logs and potentially CloudFormation.
- Configuring a pipeline of environments involves a lot of copy and paste duplication.
- Manual approvals for deployment to environments is poorly implemented and it is not possible to deploy a chosen version of the build artefacts.
- It is not easy to determine which version of each deployable is deployed to each environment.
- The setup of cross-account deployment pipelines has a number of pitfalls that will trip up an engineer who has not done it before.