Skip to main content

Python CLI for tagging AWS resources based on a YAML configuration

Project description

Avatar

Build Status Security Status Published Version

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

Developer's Guide

Build reports:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

awstaga-1.1.1.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

awstaga-1.1.1-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

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

Hashes for awstaga-1.1.1.tar.gz
Algorithm Hash digest
SHA256 4f21b14f8d91dcd73d9da100f5bfb16df09a7c9ef8c1f9eafad912e61d39b72a
MD5 b1e275c1d5b2e4932a4671210b5038a9
BLAKE2b-256 860a16c230cf0971a4e4a0812bc353dcb8988b2b1344d090347bc10dc8fd2ad2

See more details on using hashes here.

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

Hashes for awstaga-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 560a5c1ad5ad164cf0838064e2567c77521083a125d56a5d08ac8028c759b4a3
MD5 acef7549f1aa663d314b2de026757d12
BLAKE2b-256 2ba98aad1b596de19fbfc9d5eb1d04ce6a42cf550f5d859e10c4e4843400e741

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page