AWS CodePipeline now supports Deploy Spec file configurations in the EC2 Deploy action!
This feature brings more flexibility, transparency, and debugging ease to your CI/CD pipelines. Let me break it down for you with a simple example.
🆕 What's New?
You can now:
- Add a Deploy Spec file (YAML format) to your source repo.
- Reference it in your EC2 Deploy action in CodePipeline.
- Enjoy real-time EC2 instance-level deployment status in the console.
Think of this like appspec.yml from CodeDeploy—but with added power directly from your pipeline.
🔧 Example Use Case
Let’s say you’re deploying a web app to EC2 instances using CodePipeline.
Previously:
- Deployment steps were defined manually in the pipeline or via the default behavior.
- Debugging large-scale deployments was tedious—sifting through logs to find which instance failed.
Now:
- You can define deployment logic in a version-controlled file (deployspec.yml).
- You get per-instance status in real time via the deployment monitoring interface.
📁 Folder Structure
my-web-app/
├── index.html
├── start_server.sh
├── stop_server.sh
└── deployspec.yml 👈 New!
✍️ Sample deployspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
hooks:
BeforeInstall:
- location: stop_server.sh
timeout: 60
runas: ec2-user
AfterInstall:
- location: start_server.sh
timeout: 60
runas: ec2-user
This defines:
- File copy paths
- Pre/post-install hook scripts
- Execution user and timeouts
🔗 CodePipeline EC2 Deploy Configuration
In the EC2 Deploy action of your pipeline, add this:
"configuration": {
"ApplicationName": "MyApp",
"DeploymentGroupName": "MyDeploymentGroup",
"DeploySpecFile": "deployspec.yml"
}
✅ This tells the pipeline to use the deployspec.yml from your source artifact.
🖥️ Enhanced Deployment Debugging
CodePipeline now also gives you:
Real-time deployment status per EC2 instance
Easier troubleshooting—no more scanning massive logs
Faster detection of which EC2 instance failed and why
🎯 Final Thoughts
This update is a game-changer for teams deploying across many EC2 instances. You get:
Cleaner pipeline configs
Better visibility into deployments
Version-controlled deployment logic
💬 Have you tried this new feature yet? Share your thoughts or use cases in the comments below!