Show your Tool: Jenkins Pipeline Step Plugin for AWS

Michael Wittig – 02 Dec 2019

In this series, we present AWS tooling from the community for the community. We talk directly with the tool makers. Who are they? What problem does the tool solve? And what motivates them to contribute to open-source AWS tooling.

Show your Tool

This time, we talk with Thorsten Höger about the Jenkins Pipeline Step Plugin for AWS. You can connect with Thorsten on Twitter or LinkedIn.

cloudonaut: Tell us a little about yourself, your history with AWS, and your motivation to develop AWS tooling.
Thorsten Höger: I am CEO and cloud consultant at Taimos, where I am advising customers on how to use AWS. Being a developer, I focus on improving development processes and automating everything to build efficient deployment pipelines for customers of all sizes.

I organize the AWS User Group in Stuttgart (Germany), and I am frequently speaking at Meetups, BarCamps, and other community events. In 2017 I was appointed AWS Community Hero.

As a supporter of open-source software, I am maintaining or contributing to several projects, like test frameworks for AWS Lambda, Amazon Alexa, or developer tools for AWS CloudFormation and AWS CDK.

cloudonaut: What problem does your tool solve?
Thorsten Höger: I maintain a Jenkins plugin that provides pipeline steps to interact with the AWS API conveniently.

cloudonaut: Who should use your tool? Who should not?
Thorsten Höger: Obviously, it only works for Jenkins users that use Jenkins pipelines.

cloudonaut: Show us a short demo of your tool
Thorsten Höger: The following example deploys a static website.

  1. An IAM role is assumed by Jenkins to grant least privilege access to an AWS account
  2. A CloudFormation stack is created or updated to deploy the necessary AWS resources (S3 Bucket, CloudFront distribution, …)
  3. Files are uploaded to S3.
  4. The CloudFront distribution is invalidated.
withAWS(role:'admin', roleAccount:'123456789012') {
def outputs = cfnUpdate(stack:'my-stack', file:'template.yaml')
s3Upload(file:’index.html', bucket:outputs.BucketName, path:'index.html')
cfInvalidate(distribution:outputs.DistributionId, paths:['/*'], waitForCompletion: true)
}

cloudonaut: How can we use your tool?
Thorsten Höger: You can install the “Pipeline: AWS Steps” plugin via the Jenkins Update Center.

  1. In Jenkins, click on Manage Jenkins
  2. Click on Manage Plugins
  3. Select the Available tab
  4. Search for aws steps
  5. Select and install the plugin

Installing the Jenkins Pipeline Step Plugin for AWS

cloudonaut: Where can we find more information about your tool?
Thorsten Höger: You can find all the available steps in the README on GitHub.

cloudonaut: Are you aware of tools that solve a similar problem than yours? What’s the difference?
Thorsten Höger: You could use the AWS CLI in a shell step, or you could use alternatives to Jenkins like GitLab CI, GitHub Action, CodePipeline, …

cloudonaut: What’s the roadmap for your tool? Are you planning any significant releases?
Thorsten Höger: No major changes are in the pipeline. But I add steps from time to time, and I’m always looking for contributions from the community.

To accommodate non-Jenkins users, I started AWS Authenticate. The new project helps you to configure your AWS access in CI/CD environments. You can set the region, the IAM profile to use, or assume IAM roles with one CLI call. For example:

#!/bin/bash -e
(
eval "$(aws-authenticate auth --role admin --roleAccount 123456789012)"
aws s3 cp index.html s3://my-bucket/index.html
)

cloudonaut: How do you stay motivated to maintain your open source project?
Thorsten Höger: I’m working as a freelancer, and I use the plugin in many customer projects to speed up pipeline development times. I’m also amazed about how many plugin users talk to me during events and say thank you.

cloudonaut: Are you attending any conferences within the next few months where the community can get in touch?
Thorsten Höger: Yes, I’m in Las Vegas this week at AWS re:Invent. I will give a talk on Tuesday morning about Using the AWS CDK construct libraries to meet enterprise compliance. Feel free to talk to me after the talk or meet me during Taco Tuesday with AWS Heroes.

What tools do you use to make your AWS work easier? Share your favorite tool with us!

Michael Wittig

Michael Wittig

I’ve been building on AWS since 2012 together with my brother Andreas. We are sharing our insights into all things AWS on cloudonaut and have written the book AWS in Action. Besides that, we’re currently working on bucketAV, HyperEnv for GitHub Actions, and marbot.

Here are the contact options for feedback and questions.