Purpose
Apply standardized tags to EC2 instances, with optional add-only behavior for missing keys.
Location
cloud/aws/ec2/tag-instance.sh
Preconditions
- Required tools:
bash,aws - Required permissions:
ec2:CreateTags,ec2:DescribeTags - 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 |
--tag KEY=VALUE |
Cond. | none | Tag pair (repeatable) |
--tags CSV |
Cond. | none | Comma-separated tag pairs |
--if-missing |
No | false |
Add keys only when absent on each instance |
--region REGION |
No | AWS CLI default | AWS region override |
--profile PROFILE |
No | AWS CLI default | AWS profile override |
--dry-run |
No | false |
Print commands only |
Scenarios
- Happy path: governance tags applied consistently to all targeted instances.
- Common operational path: bulk tag updates during onboarding or cost-allocation enforcement.
- Failure path: invalid tag syntax or missing tag write permissions.
- Recovery/rollback path: reapply previous tag set from source-of-truth inventory.
Usage
cloud/aws/ec2/tag-instance.sh --id i-0123456789abcdef0 --tag Environment=prod --tag Owner=platform
cloud/aws/ec2/tag-instance.sh --ids i-0123456789abcdef0,i-0fedcba9876543210 --tags CostCenter=1234,Service=api
cloud/aws/ec2/tag-instance.sh --id i-0123456789abcdef0 --tag Backup=true --if-missing
Behavior
- Main execution flow:
- validates instance IDs and tag pair syntax
- optionally discovers existing keys per instance (
--if-missing) - applies tags via
create-tags - Idempotency notes: standard mode overwrites supplied keys;
--if-missingpreserves existing keys. - Side effects: metadata changes on target EC2 resources.
Output
- Standard output format: timestamped tagging logs on stderr.
- Exit codes:
0success2invalid arguments- non-zero AWS/API failure
Failure Modes
- Common errors and likely causes:
- malformed tag expression
- unauthorized tagging action
- instance/resource lookup failures in wrong region/account
- Recovery and rollback steps:
- fix syntax and rerun
- validate IAM policy scope and AWS context
- reapply desired tag catalog from CMDB/source repository
Security Notes
- Secret handling: avoid placing secrets or tokens in tag values.
- Least-privilege requirements: scoped tag write/read permissions.
- Audit/logging expectations: tag mutations should be visible in CloudTrail and governance reviews.
Testing
- Unit tests:
- parsing and validation of tag pairs
--if-missingselection logic- Integration tests:
- bulk tag updates in sandbox account
- Manual verification:
- inspect final tags with
describe-tagsor EC2 console