AWS CodeStar in 2021
AWS CodeStar blew up briefly in 2017, with a lot of interest in its streamlined aggregation of developer tools in AWS, but new development has petered out throughout the years. This, unfortunately, is something AWS has done with quite a few of its services. They have a big launch with big plans, but it doesn’t really go anywhere.
While CodeStar falls under this pattern, there have been some new changes since I did an original review back in 2017. In that video I explain what CodeStar is and what types of applications it would be good for. Since that video was recorded, many things have changed in AWS and with CodeStar, so I wanted to revisit the material.
In this article, let’s take a look at some of the updates and then see if AWS CodeStar is a good option for your application.
You can also watch my video on AWS CodeStar here:
The More CodeStar Changes, The More it Stays the Same
One of the most visible changes in CodeStar is that the UI has been updated to match the new AWS UI. In my previous review, I showed the original CodeStar UI, which used the old AWS styling. I actually liked the old look. It had its own appeal. The new UI has been updated to match the current UI with all the other AWS services. This actually isn’t something I’m fond of, but I’ll get to that later.
Another change, which is maybe more important, is that the services that CodeStar utilizes have become more mature. One of the downsides I noted in my previous review was that many of the services that CodeStar utilized weren’t worth using yet. Services such as CodeCommit needed to add features and to generally become more mature. This is exactly what the services CodeStar works with have done; just not CodeStar. I’ll also talk about that more later.
The AWS CodeStar Dashboard
One of the first pros I brought up in my original review was the dashboard. I really liked the CodeStar dashboard. You had access to a lot of different features, metrics, and data points to help you understand the health of your project. It also had a style and layout that matched the service perfectly, even if it didn’t quite vibe with what else was going on in AWS.
With the new update, while there is still a dashboard, it uses the bland, normal AWS service UI that everything else has. It doesn’t differentiate itself or really display information quite as well. Let me show you what that looks like.
Here’s the CodeStar service dashboard for a project I built to try CodeStar out. If you’ve been using AWS recently, you can see the dashboard looks like every other service using the updated UI. As you can see, it’s almost not like a dashboard. It looks more like the details panel for an RDS database.
Some of the good information points included in the dashboard are the status of the project and CloudWatch metrics.
This is the CloudWatch CPU utilization metric for my project. You can also add other CloudWatch metrics or CloudWatch dashboards here by editing this Project Activity section. Honestly, if you took the time to build out a CloudWatch dashboard for your CodeStar project, it would probably look a lot better than having just one single metric. Unless I really only care about the CPU usage of my application, this doesn’t tell me nearly enough.
Below the Project Activity section, there is a Project Resources section on the dashboard. I’m not sure why this needs to be here. It would make a lot more sense to have it in a details panel or on another tab like CloudFormation does.
At the bottom of the dashboard is the README for the project, which is pulled from the GitHub repository or CodeCommit repository. Again, this just seems out-of-place on the dashboard for a CodeStar project. It’s not that the README is specifically not appropriate for this dashboard, but more that there are way more important data points that are missing while this has been included.
What’s disappointing with the CodeStar dashboard is that you can only customize one part of it.
You can modify the single CloudWatch metric:
Or you can import CloudWatch dashboard JSON to have a more built-out dashboard:
But this gives me no additional customization or data beyond what a basic CloudWatch dashboard would provide. The dashboard isn’t what it used to be.
CodeStar is all about combining different developer tool services, like CodePipeline, CodeCommit, and CodeDeploy. A better use of this dashboard would be to combine data points from those CI/CD tools instead of focusing only on the current state of your running application. Again, if I wanted that I'd just go to CloudWatch. I go to CodeStar to see the progress of my CI/CD.
A better unified dashboard in AWS is the Amplify project dashboard, which combines CI/CD and current application state data in an elegant way.
CodeStar Integrates with What?
When CodeStar launched, there were very few integrations, although more were promised. At the time of my original review, there was only a JIRA integration available. I realized that if they started adding these integrations, CodeStar could really become a valuable service.
Unfortunately, since that time, the only integration addition has been the ability to integrate GitHub repositories with CodeStar. This is pretty essential for any CI/CD tool, of course, but there haven’t been any other source code repositories or issue trackers added. Even though GitHub and JIRA are some of the biggest in the industry, there are so many other options out there that could be integrated.
By limiting CodeStar integrations to those two, the potential userbase for CodeStar is dramatically reduced.
New Project Creation Speedbumps
When CodeStar initially launched, creating a new project with CodeStar was unnecessarily complicated. More than anything else, creating a new project should have been effortless, since the whole point of CodeStar is that it is supposed to be easy and user-friendly. Luckily, they’ve finally solved a lot of those initial problems.
The main issue with project creation when CodeStar launched was that when you created your first project with CodeStar, you had to go into IAM to create a service role for CodeStar to use. For a service trying to lower the bar for users, this is an exercise many will have trouble performing. They’ve changed that now. There is a button that automates the creation of that IAM role, and you don’t even have to leave the main CodeStar page.
Another issue with new project creation was restrictions around Git credentials. Previously, CodeStar only worked with AWS CodeCommit. When creating a new CodeCommit repository, you had to manually generate and configure Git credentials, which was inconvenient. Again, something that could trip up new users.
Now, because you can use GitHub, you can bypass new Git configuration. Once you set up the GitHub SSO connection with AWS, you don’t have to set up any new Git credentials.
One Size Fits None
When CodeStar first launched in 2017, the lack of customization with integrations and tools you could use seemed like a huge hindrance to adoption. In 2021, the software world has only become more fragmented with the amount of CI/CD options and tools available. This really makes CodeStar dead in the water for most users.
Especially with existing projects and teams, the reluctance to change existing tools for a new aggregation resource is going to be a really hard sell.
Really!? Still No CloudFormation Support!?
Over the years, I’ve become a more ardent supporter of infrastructure as code. It’s simply the best way we have to create and manage infrastructure in the cloud.
This is another way that CodeStar is really failing. To create a CodeStar project with a CloudFormation template, you have to use the CodeStar Transform. This is similar to the Serverless transform that the Serverless Application Model (SAM) is built on. These transforms allow you to supply a small amount of information that CloudFormation then uses to create more robust infrastructure.
The issue at hand with the CodeStar Transform is that there is no documentation for it. Occasionally this happens when a service is new. Honestly, AWS does have some struggles with documentation, but there is no excuse for not having documentation four years later.
Due to the non-documented CodeStar Transform for CloudFormation templates, using it seriously in 2021 is not a good idea.
AWS Developer Tools are Growing Up
One of the major issues I had with CodeStar in 2017 is that the underlying services weren’t very mature, specifically CodeCommit and CodePipeline. Things have changed quite a bit for those services, and I’ve actually been using both in isolation with projects in production to good effect.
CodeCommit is now a good option for managing your source code. It’s not public, like GitHub or GitLab, but it finally has all of the necessary features to work collaboratively in a team, most notably Pull Requests. Altogether, except for perhaps some kind of price benefit or data storage preference, I wouldn’t really recommend CodeCommit over any of the other popular code repositories.
I’ve also been using CodePipeline for production applications at my job for several years. It works well in pretty much all cases. It can’t do as many non-AWS things as other CI/CD options, but if you’re working in AWS or deploying to AWS, CodePipeline probably has all the features you need.
CodeStar Hates Existing Projects
Unless I’m doing something wrong, you cannot use CodeStar with existing projects. When you create a new CodeStar project, it creates a new repository. When I tried connecting to an existing repository in GitHub, it would throw an error and wouldn’t create the CodeStar project, saying the repo already existed. So, I take it that existing projects are a no-go with CodeStar.
Again, this is a big miss, as most teams and people won’t be creating new projects as frequently as they’ll be working on existing projects. CodeStar is never going to have the same appeal as services like Heroku or Vercel, so ignoring enterprise teams and legacy projects is a bad idea.
Is CodeStar for you?
So who is CodeStar really for?
If you’re brand new to CI/CD, CodeStar might be a good option to easily create a new project, play around with it, and to see how CI/CD works using all of AWS’s native services. However, there isn’t a lot of customization, and there are plenty of unavailable tools you’ll want to use in your CI/CD. So in that case, CodeStar would be somewhat limiting.
If you have a Serverless app, I would recommend using AWS Amplify instead of CodeStar. AWS Amplify is a newer service and has already fixed a lot of the cons I’ve mentioned with CodeStar.
If you already understand CI/CD and CodePipeline, the only benefit that CodeStar brings that I can see is the ability to create all those resources at once. Basically, the CodeStar wizard is the best part about it.
I think CodeStar has mostly been abandoned by AWS. There doesn’t seem to be any new development with the service, and unless they significantly overhaul the service, I can’t see it providing many teams any value. It doesn’t do enough for small teams and lacks the customization needed for enterprise teams.
The lessons learned from attempting to create a service like CodeStar seem to have been applied to the AWS Amplify service. Unfortunately, Amplify only supports certain types of projects, like Serverless and Statically rendered sites.
Having a unifying service for the AWS Developer Tools could be really useful if done well. Maybe CodeStar could have a second life at some point!