Introduction

At AWS re:invent 2022 the new service CodeCatalyst was announced—adding to the suite of Code* services which revolve around CI/CD use cases. This new service takes this on another level as it provides blueprints as well as in the future the possibility to create own personal or organizational blueprints. These blueprints contain a base for your code, a CI/CD pipeline and information for CloudFormation to deploy infrastructure to run that code. 

This enables Developers to “just” code and leave all the rest to CodeCatalyst without forgoing on infrastructure possibilities. Using other fully managed services where Code alone brings you a long way usually locks you in to certain infrastructure. In this case, it’s quite the contrary—as you orchestrate CloudFormation this way, you can use every service and feature that AWS offers.

How to access CodeCatalyst 

Other than most AWS services, you don’t access the CodeCatalyst Interface directly from the AWS Management Console, but from its own web app located at codecatalyst.aws. Here you will create yourself a BuilderID if you don’t happen to have one already and create a Space at the same time. Spaces in CodeCatalyst are the root structure where your Projects will be located—an important thing to mention regarding spaces is that one space can only be linked to one AWS Account as a Billing Account. Also, one AWS Account can only be linked to one Space right now. 

After you signed up (or in if you already had an account) and named your first project—you’ll be greeted by the following screen. This place serves as the place for all your projects and Space-related settings. At the top, you can create a new project—that’s where the fun begins. 

CodeCatalyst also makes it easy to collaborate on a project, as you can just invite anyone right from the Space settings or Project settings—depending on which level you want to give them access. The invite works via email, so you can invite anyone, and they’ll get an email prompting them to set up a BuilderID if they don’t happen to have one already. 

Creating a project 

As of currently, there are two ways to create a project. The second one is quite straight forward as it’s just an empty project from scratch. We won’t go deeper into that. The interesting feature for CodeCatalyst is the first option—create a project from a Blueprint. 

A Blueprint in CodeCatalyst contains everything you need to get started with a popular architecture or application type. This includes sample code, CDK code for creating the necessary infrastructure to run your code and a CI/CD pipeline preset. For our example, we’ll create a project from the Blueprint Single-page application. When you click on a Blueprint, there’s more information on the side regarding it, which you can enlarge to get to know more about what the Blueprint is intended for. 

After we’ve chosen a Blueprint, we can adjust a few custom options different for every Blueprint, as well as the standard options like naming. The most important option for all of this to work is to add an IAM role, which is able to create the needed resources in your AWS account. The project creation page includes a link to the role requirements. 

The custom options in this case include which hosting method to use or which language for CDK. Do note that currently as this services still is in a preview state the number of supported regions is quite limited. 

What can CodeCatalyst do? 

As soon as you created your project, you’ll be thrown into the CodeCatalyst project overview. As you can see on the sidebar, there are a few menu points. Let’s go through the most interesting options to understand what CodeCatalyst can do and what it offers in terms of features. 

Issues 

Here you can find a fully fleshed out Kanban Board experiences with support for custom fields, multiple boards and a few other neat customization options. This is actually a good and usable kanban tool integrated right where your code, environments, and CI/CD lives. It’s an effort towards giving developers a single tool for everything they need. 

Code 

The Code section is a basic Git tool where your Code repositories stay, with support for Pull requests. What makes this section very appealing is the subsection Dev Environments. 

All developers know the issue that it works on my machine but not on the actual dev or prod environments. This is of course due to the fact that you have to set up all necessary dependencies correctly on your local machine, which can be very tedious when you work on multiple projects which get updated a lot. Dev Environments are a solution to these problems as these are customizable environments in the cloud which can be used right from within your favorite IDE. As it is quickly spun up and uses port forwarding to your local host, it feels just like developing on your local machine, without the issues that usually come with that. 

CI/CD 

This is an important core section of what makes CodeCatalyst so interesting. As the title suggests, here you can define your CI/CD pipeline. The first subsection Workflows are used to create the steps that should happen upon other events. This can be done as YAML files or with the integrated visual editor which does a great job understandably visualizing the workflow structure and correctly putting it into the YAML files which also live in the source repository. 

If you want to stage your changes in a development or test environment, you can do this by creating Environments which can then be used by your Workflows. These can be individually connected to different AWS accounts, which enables you to deploy your changes into a test account before deploying them to your prod account. 

Really straight forward is the feature of Secrets, which just enables you to use passwords, tokens, and other secret values in your workflows without putting them in plain text. Once a secret is created, the value cannot be shown again. 

Why should you use CodeCatalyst? 

Now I have shown you what CodeCatalyst is, how it works and what it can do. But of course there is always the question of why you should switch to a new tool, as it’s usually not trivial. In my opinion, there are a few reasons why CodeCatalyst can increase your agility, security as well as your Developer experience overall. 

For once, it is a single point of entry for every developer in an organization as it serves the need of version control, kanban boards and access to correctly setup development environments without the need of configuring your machine over and over. It will simplify the life of a coder and enable them to focus on writing code. 

If you have experience with working on Cloud Infrastructure while employing external developers, you will know that there’s often an effort to lock them down from accessing too much of your infrastructure. CodeCatalyst can help here as you only give those external developers restricted access to a CodeCatalyst project and not directly to an AWS account. As you also ideally have your Kanban experience in there, they won’t even need a Jira or similar account, which could have wrongly defined permissions. 

This has the potential to be the next generation of tools for developers, as it aims to eliminate the need for a bunch of different tools and choices that come with this abundance. As this service will grow and get the features they promised like organizational blueprints and more third party integrations, this might become the home for a rising amount of developers. We will watch this evolving with great interest.