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_IDandAWS_SECRET_ACCESS_KEY, orAWS_PROFILE). - Run
aws sts get-caller-identityto 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
scpto 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-servicesto 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
- AWS authentication succeeds.
- Build succeeds.
- Artifacts are transferred.
- Health check (curl) returns 200 OK.