Which solution will meet these requirements with the LEAST operational overhead?
Create a new action with AWS Lambda as the action provider. Create a Lambda function that makes an AWS SDK API call to create the CloudFormation stack.
Create a new action with CloudFormation as the action provider. Set the action mode to CREATE_UPDATE. Target the CloudFormation stack to be launched.
Create a new action with Jenkins as the action provider. Create and configure a Jenkins job to make an API call by using the AWS CLI to create the CloudFormation sack.
Create a new action with AWS CodeBuild as the action provider. Configure the buildspec to make an API call by using the AWS CLI to create the CloudFormation stack.
Explanations:
While using AWS Lambda can automate actions, it introduces more operational overhead as you need to write and manage a Lambda function that interacts with the AWS SDK to create the CloudFormation stack. This adds unnecessary complexity for simply creating a stack.
Using CloudFormation as the action provider in CodePipeline with the action mode set to CREATE_UPDATE is the most straightforward and efficient approach. CodePipeline directly supports CloudFormation actions, which eliminates the need for additional custom code or configuration.
Jenkins is a third-party tool that would introduce unnecessary operational overhead for creating the CloudFormation stack. Setting up and maintaining Jenkins jobs adds complexity compared to using AWS-native services like CloudFormation directly within CodePipeline.
While CodeBuild can be used to execute CLI commands, using it to create a CloudFormation stack is less efficient than using CloudFormation directly as an action provider. It requires more setup (buildspec and AWS CLI commands), adding complexity for the specific use case of creating a stack.