Python CLI for tagging AWS resources based on a YAML configuration
Project description
Awstaga
Awstaga is a Python CLI for tagging AWS resources based on a YAML configuration.
Installation
pip3 install awstaga
Usage
Create a configuration file, e.g. awstaga.yaml
:
---
tagsets:
- name: common
tags:
- key: CostCentre
value: FIN-123
- key: Organisation
value: World Enterprise
- key: Description
value: AWS Resource
- name: prod
tags:
- key: EnvType
value: prod
- key: Availability
value: 24x7
- name: nonprod
tags:
- key: EnvType
value: non-prod
- key: Availability
value: on-demand
resources:
- arn: 'arn:aws:ssm:ap-southeast-2:123456789012:document/high-avail'
tags:
- key: Description
value: High availability SSM document
tagsetnames:
- common
- prod
- arn: 'arn:aws:s3:::world-enterprise/development/logo.jpg'
tags:
- key: Description
value: World Enterprise logo
tagsetnames:
- common
- nonprod
And then run awstaga
CLI and pass the configuration file path:
awstaga --conf-file awstaga.yaml
It will write the log messages to stdout:
[awstaga] INFO Loading configuration file awstaga.yaml
[awstaga] INFO Loading 3 tagset(s)...
[awstaga] INFO Loading 2 resource(s)...
[awstaga] INFO Adding resource arn:aws:ssm:ap-southeast-2:123456789012:document/high-avail to a batch with tags {'CostCentre': 'FIN-123', 'Organisation': 'World Enterprise', 'Description': 'AWS Resource', 'EnvType': 'prod', 'Availability': '24x7', 'Description': 'High availability SSM document'}
[awstaga] INFO Adding resource arn:aws:s3:::world-enterprise/development/logo.jpg to a batch with tags {'CostCentre': 'FIN-123', 'Organisation': 'World Enterprise', 'Description': 'AWS Resource', 'EnvType': 'prod', 'Availability': '24x7', 'Description': 'World Enterprise logo'}
Dry run
You can also run Awstaga in dry-run mode by adding --dry-run
flag:
awstaga --conf-file awstaga.yaml --dry-run
During dry-run mode, Awstaga log messages will be labeled with [dry-run]
:
[dry-run] [awstaga] INFO Loading configuration file awstaga.yaml
[dry-run] [awstaga] INFO Loading 3 tagset(s)...
[dry-run] [awstaga] INFO Loading 2 resource(s)...
[dry-run] [awstaga] INFO Adding resource arn:aws:ssm:ap-southeast-2:123456789012:document/high-avail to a batch with tags {'CostCentre': 'FIN-123', 'Organisation': 'World Enterprise', 'Description': 'AWS Resource', 'EnvType': 'prod', 'Availability': '24x7', 'Description': 'High availability SSM document'}
YAML includes
Awstaga supports YAML includes using , so you can split your configuration into multiple files:
---
tagsets:
- !include include.d/tagset.yaml
resources: !include include.d/resources.yaml
Include files should be put under `include.d/`` folder relative to the configuration file.
The included tagset file include.d/tagset.yaml
:
---
name: common
tags:
- key: CostCentre
value: FIN-123
- key: Organisation
value: World Enterprise
- key: Description
value: AWS Resource
The included resources file include.d/resources.yaml
:
---
- arn: 'arn:aws:ssm:ap-southeast-2:123456789012:document/high-avail'
tags:
- key: Description
value: High availability SSM document
tagsetnames:
- common
- prod
- arn: 'arn:aws:s3:::world-enterprise/development/logo.jpg'
tags:
- key: Description
value: World Enterprise logo
tagsetnames:
- common
- nonprod
Batch size
In order to optimise the number of API calls, resources with identical tags are put into batches. By default, the batch size is 20.
You can run Awstaga with a custom batch size --batch-size <number>
flag:
awstaga --conf-file awstaga.yaml --batch-size 10
Configuration
These are the configuration properties that you can use with awstaga
CLI.
Some example configuration files are available on examples folder.
Property | Type | Description | Example |
---|---|---|---|
tagsets[] |
Array | A list of one or more tagsets. Any tagset can be associated with any resource, and the resource will include the tags specified in the tagset. | |
tagsets[].name |
String | The name of the tagset. | common |
tagsets[].tags[] |
Array | A list of one or more key-value pair tags within the tagset. | |
tagsets[].tags[].key |
String | The tag key. | CostCentre |
tagsets[].tags[].value |
String | The tag value. | FIN-123 |
resources[] |
Array | A list of one or more AWS resources. Each of the resource has a corresponding list of tags, along with the tags from tagsets. | |
resources[].arn |
String | AWS resource ARN. | arn:aws:s3:::world-enterprise/development/logo.jpg |
resources[].tags[] |
Array | A list of one or more key-value pair tags of the resource. | |
resources[].tags[].key |
String | The tag key. | Description |
resources[].tags[].value |
String | The tag value. | Some description |
resources[].tagsetnames[] |
Array | A list of one or more tagset names. All tags within the tagsets specified are included in the resource. |
Colophon
Build reports:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file awstaga-1.1.1.tar.gz
.
File metadata
- Download URL: awstaga-1.1.1.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.0 Linux/6.2.0-1016-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f21b14f8d91dcd73d9da100f5bfb16df09a7c9ef8c1f9eafad912e61d39b72a |
|
MD5 | b1e275c1d5b2e4932a4671210b5038a9 |
|
BLAKE2b-256 | 860a16c230cf0971a4e4a0812bc353dcb8988b2b1344d090347bc10dc8fd2ad2 |
File details
Details for the file awstaga-1.1.1-py3-none-any.whl
.
File metadata
- Download URL: awstaga-1.1.1-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.0 Linux/6.2.0-1016-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 560a5c1ad5ad164cf0838064e2567c77521083a125d56a5d08ac8028c759b4a3 |
|
MD5 | acef7549f1aa663d314b2de026757d12 |
|
BLAKE2b-256 | 2ba98aad1b596de19fbfc9d5eb1d04ce6a42cf550f5d859e10c4e4843400e741 |