Which combination of steps will meet these requirements with the LEAST management overhead?
(Choose three.)
Add a deploy stage to the pipeline. Configure Amazon ECS as the action provider.
Add a deploy stage to the pipeline. Configure AWS CodeDeploy as the action provider.
Add an appspec.yml file to the CodeCommit repository.
Update the image build pipeline stage to output an imagedefinitions.json file that references the new image tag.
Create an AWS Lambda function that runs connectivity checks and API calls against the service. Integrate the Lambda function with CodePipeline by using a Lambda action stage.
Write a script that runs integration tests against the service. Upload the script to an Amazon S3 bucket. Integrate the script in the S3 bucket with CodePipeline by using an S3 action stage.
Explanations:
Adding a deploy stage to the pipeline and configuring Amazon ECS as the action provider allows the new container image to be deployed directly to the ECS service, ensuring that the integration tests can run against the most recent version of the application.
Using AWS CodeDeploy as the action provider is unnecessary for ECS services, as ECS has its own deployment capabilities. CodeDeploy is typically used for EC2 instances or Lambda functions, which does not align with the requirement to test an ECS service.
An appspec.yml file is relevant for AWS CodeDeploy, which is not applicable here since the deployment is happening directly to ECS. Therefore, including this file does not meet the requirements and adds unnecessary complexity.
Updating the image build pipeline stage to output an imagedefinitions.json file that references the new image tag is essential. This file is used by the ECS deployment process to specify which image to use, thus facilitating integration testing on the correct version of the service.
Creating an AWS Lambda function to run connectivity checks and API calls against the service provides a lightweight and serverless approach to testing. Integrating this Lambda function with CodePipeline ensures that tests are automated and triggered after deployment without requiring additional infrastructure management.
Writing a script to run integration tests and uploading it to an S3 bucket introduces unnecessary overhead and complexity. While it could technically work, managing the script and the S3 integration does not align with minimizing management overhead and is less efficient than using a Lambda function for testing.