Farewell, CodeCommit

When AWS rolled out CodeCommit and the associated suite of code lifecycle products, I was quite pleased. I liked the idea of keeping code, and build cycles, inside the platform where I was mostly deploying the code, and where most of the code related to the platform.

Fast forward to 2025, and AWS decided to end-of-life the suite. It wasn’t too surprising. The 800 lb gorilla in the room is GitHub. Since Microsoft bought it, it’s moved way beyond a simple repository host to an all-encompassing, all-you-can-eat code lifecycle and project hosting service. For startups and early stage companies, it’s a no-brainer to use GitHub. The price is ok, and every developer you hire will be somewhat familiar with it.

GitHub is also simpler to onboard new users – rather than setting up an AWS IAM identity, and users creating an authorisation token with something like the following, your new developer just needs to create (or bring) a PKI key, and they’re off and running

export CODEARTIFACT_AUTH_TOKEN=`aws --profile ??? --region eu-west-1 codeartifact get-authorization-token --domain development --domain-owner 889113043993 --query authorizationToken --output text` 

So, goodbye CodeCommit, hello GitHub.

I’m slowly moving projects over from CodeCommit to GitHub, and taking the opportunity to give the projects a bit of a buff and shine. It’s also allowing me to simplify my off-computer Git repository management because I had some projects pushing to both locations.

Typically what I had been doing was keeping private projects, and work in progress, in CodeCommit, then publishing to GitHub when I wanted to be able to share them. This migration has given me a chance to dive a bit more deeply into CI/CD on GitHub, and think about how to automate (or semi-automate) publishing into AWS. It also gave me a chance to properly explore how Maven repositories inside GitHub work.

The first ones I tackled were a proof-of-concept around using AWS API Gateway in front of a Lambda . But I couldn’t publish the gateway Terraform code until I could deploy the lambda. And I couldn’t deploy the lambda until the library it wrapped around was published. And I couldn’t publish that library until the little helper library I have was also published. So…

  1. ldutils is a little helper library you can add as a Java dependency via Maven;
  2. iplib is a library that abstracts away a service AWS provides to look up their CIDR blocks, also available as a Java dependency via Maven;
  3. awscidr is a command line utility for looking up those CIDR blocks;
  4. cidrlambda is the lambda code;
  5. and cidrapi is the Terraform code to deploy the API gateway in front of the lambda!

Now that’s all done, I’ll be able to quickly iterate on the remaining projects, and probably take more of them into public visibility.

Leave a Reply

Your email address will not be published. Required fields are marked *