| name | aws-deployment |
| description | Deep knowledge about deploying applications to AWS (EC2, ECS, S3, CloudFront, Cloud Run). |
| type | transform |
| tier | library |
| domain | deploy |
| trigger | when deploying to AWS |
Context
Deploying {{project_name}} ({{project_type}}) to Amazon Web Services (AWS).
You will follow a strict 6-phase Deployment Lifecycle Contract.
Instructions
Execute the following phases in order:
Phase 1: Authentication
- Verify the presence of AWS credentials (
AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, or AWS_PROFILE).
- Run
aws sts get-caller-identity to confirm authentication.
- If using an IAM role (e.g., in GitHub Actions via OIDC), ensure the role is successfully assumed.
Phase 2: Build
- Prepare the artifacts for deployment.
- If containerized (ECS, AppRunner, EKS): run
docker build -t <image-name> .
- If static site (S3/CloudFront): run your framework's build command (e.g.,
npm run build).
- If Node.js/Python on EC2: bundle the application code.
Phase 3: Install / Provisioning
- Ensure the target AWS resources exist.
- If using S3: run
aws s3 ls s3://<bucket-name> to verify bucket presence. Create it if it doesn't exist.
- If using ECR: authenticate Docker to ECR (
aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.com).
- If using EC2: ensure you have the correct key pairs or Session Manager access.
Phase 4: Deploy
- Ship the artifact to AWS.
- S3/CloudFront:
aws s3 sync dist/ s3://<bucket-name> --delete. Then invalidate cache: aws cloudfront create-invalidation --distribution-id <id> --paths "/*".
- ECS: Push image to ECR, then update the ECS service (
aws ecs update-service --cluster <cluster> --service <service> --force-new-deployment).
- EC2 (File-based): Use
scp to copy files, SSH in, install dependencies, and restart PM2/Systemd.
Phase 5: Checking
- Verify the deployment was successful.
- Curl the application's public URL or load balancer to check for an HTTP 200 OK status.
- Check AWS logs via CloudWatch (
aws logs tail ...) if you encounter errors.
- For ECS, check
aws ecs describe-services to ensure running count matches desired count.
Phase 6: Update / Rollback
- If Phase 5 fails, immediately initiate a rollback.
- S3/CloudFront: Restore previous files (requires versioning enabled on S3) or sync from a previous build artifact.
- ECS: Update the service to use the previous task definition revision.
- Note the failure in the progress log.
Validation