Which solution will meet these requirements?
Use AWS CodeBuild to run tests and security scans. Use an Amazon EventBridge rule to send Amazon SNS alerts to the Developers when unit tests fail. Write AWS Cloud Developer kit (AWS CDK) constructs for different solution features, and use a manifest file to turn features on and off in the AWS CDK application. Use a manual approval stage in the pipeline to allow the lead Developer to approve applications.
Use AWS Lambda to run unit tests and security scans. Use Lambda in a subsequent stage in the pipeline to send Amazon SNS alerts to the developers when unit tests fail. Write AWS Amplify plugins for different solution features and utilize user prompts to turn features on and off. Use Amazon SES in the pipeline to allow the lead developer to approve applications.
Use Jenkins to run unit tests and security scans. Use an Amazon EventBridge rule in the pipeline to send Amazon SES alerts to the developers when unit tests fail. Use AWS CloudFormation nested stacks for different solution features and parameters to turn features on and off. Use AWS Lambda in the pipeline to allow the lead developer to approve applications.
Use AWS CodeDeploy to run unit tests and security scans. Use an Amazon CloudWatch alarm in the pipeline to send Amazon SNS alerts to the developers when unit tests fail. Use Docker images for different solution features and the AWS CLI to turn features on and off. Use a manual approval stage in the pipeline to allow the lead developer to approve applications.
Explanations:
This option correctly utilizes AWS CodeBuild to run automated unit tests and security scans. It uses Amazon EventBridge to trigger alerts via SNS when tests fail, meeting the alerting requirement. The AWS CDK is appropriate for managing application features with a manifest file for toggling features. A manual approval stage is also included for the lead developer, fulfilling all stated requirements.
This option incorrectly suggests using AWS Lambda for running unit tests and security scans, which is not ideal for this scenario as CodeBuild is specifically designed for building and testing applications. Additionally, using Amplify plugins for feature management is not relevant here. While SES could be used for notifications, SNS is a more appropriate choice for alerting developers about test failures.
While Jenkins can run unit tests and security scans, it is not part of the AWS ecosystem and would complicate the CI/CD pipeline integration with other AWS services. The use of Amazon SES for alerts is also less ideal compared to SNS. Furthermore, AWS CloudFormation nested stacks are not the best fit for dynamically turning features on and off compared to the flexibility provided by AWS CDK. The manual approval process is valid but does not compensate for the shortcomings of the other elements.
This option incorrectly states that AWS CodeDeploy is responsible for running tests and scans, which it does not do. CodeDeploy is used for deployment. Moreover, using CloudWatch alarms for test failure alerts is not appropriate since they are not triggered by CodeDeploy. The suggestion of using Docker images for feature management is not aligned with the CI/CD requirements, and while there is a manual approval stage, the foundational elements of this option are flawed.