Purpose
Start one or more EC2 instances safely with optional state convergence waiting.
Location
cloud/aws/ec2/start-instance.sh
Preconditions
- Required tools:
bash,aws,date,sleep - Required permissions:
ec2:DescribeInstances,ec2:StartInstances - Required environment variables: none
Arguments
| Flag | Required | Default | Description |
|---|---|---|---|
--id INSTANCE_ID |
Cond. | none | Instance ID (repeatable) |
--ids CSV |
Cond. | none | Comma-separated instance IDs |
--region REGION |
No | AWS CLI default | AWS region override |
--profile PROFILE |
No | AWS CLI default | AWS profile override |
--wait |
No | true |
Wait for running state |
--no-wait |
No | false |
Return immediately after start API call |
--timeout SEC |
No | 900 |
Wait timeout |
--poll-interval SEC |
No | 10 |
Poll interval during wait |
--dry-run |
No | false |
Print commands only |
Scenarios
- Happy path: stopped instances start and reach
runningbefore script exits. - Common operational path: start several patch-window instances by explicit IDs.
- Failure path: target instance in invalid state or missing start permission.
- Recovery/rollback path: inspect state transitions in CloudTrail/EC2 console and retry failed IDs.
Usage
cloud/aws/ec2/start-instance.sh --id i-0123456789abcdef0
cloud/aws/ec2/start-instance.sh --ids i-0123456789abcdef0,i-0fedcba9876543210 --no-wait
cloud/aws/ec2/start-instance.sh --id i-0123456789abcdef0 --timeout 1200 --poll-interval 15
Behavior
- Main execution flow:
- validates IDs and fetches current states
- skips already running/pending instances
- starts eligible targets
- optionally waits until all requested instances are
running - Idempotency notes: safe repeat execution; already-running instances are skipped.
- Side effects: changes instance power state.
Output
- Standard output format: timestamped lifecycle logs on stderr.
- Exit codes:
0success2invalid arguments/state preconditions- non-zero AWS CLI/API failure codes
Failure Modes
- Common errors and likely causes:
- invalid instance ID input
- unauthorized
StartInstances - timeout waiting for long boot cycles
- Recovery and rollback steps:
- verify IAM policy and account/region context
- increase timeout for heavy boot workloads
- inspect failed instance status checks and system logs
Security Notes
- Secret handling: no secret output or persistence.
- Least-privilege requirements: start + describe permissions for scoped instances only.
- Audit/logging expectations: instance starts should align with approved change windows.
Testing
- Unit tests:
- option parsing and ID validation
- state skip/start target selection
- Integration tests:
- start stopped instances in non-production account
- wait/no-wait behavior
- Manual verification:
- confirm
State.Name=runningviadescribe-instances