<p>I would set up a base taxonomy to start with, you can use automation across your estate to ensure that all resources follow the taxonomy.  You have a choice between simply deleting resources that don't comply or reporting on it to a central team who are responsible for chasing down and educating the owners.</p>

<p>I have followed the <a href="http://www.azurefieldnotes.com/2016/07/18/azure-resource-tagging-best-practices/" rel="noreferrer">Best Practice</a> set out by Microsoft for both Azure and Amazon:</p>

<ul>
<li><strong>Owner</strong> - normally this is a team distribution list although sometimes it is an individual if it is a "10% time" project.  To make sure that the e-mail address entered is valid we run a hourly scan of our estate to detect if there are new e-mail addresses in this field then send an e-mail with an activation link, failing to activate results in deletion after three days.</li>
<li><strong>CostCenter</strong> - the numeric cost centre, we use this to feed into the end of month reconciliation.</li>
<li><strong>SDLCPhase</strong> - one of <code>Development</code>, <code>Test</code>, <code>SIT</code>, <code>UAT</code>, <code>PerfTest</code>, <code>PreProduction</code>, <code>Production</code>.  We use this to define different automated behavour:

<ul>
<li><strong>Development</strong> and <strong>Test</strong>: deleted overnight and at weekends to save on costs.  Teams are responsible for reprovisioning using the automation in the morning.</li>
<li><strong>SIT</strong>, <strong>UAT</strong> and <strong>PerfTest</strong>: deleted when the cost center in our finance system is closed down.</li>
<li><strong>PreProduction</strong>: scaled down overnight and when the cost center is closed down.</li>
<li><strong>Production</strong>: we validate that all resources deployed to the production subscription have this tag, if they don't we send out e-mails extensively.</li>
</ul></li>
<li><strong>DropDeadDate</strong> - for us, this is a required field for everything except Production.  We run a nightly scan and send e-mails to the owner 7 days and 1 day before the <strong>DropDeadDate</strong> then delete the resource after it has passed.</li>
</ul>

<p>In terms of the automation around this I have a tendency to use <a href="https://github.com/Netflix/SimianArmy/wiki/Janitor-Home" rel="noreferrer">Janitor Monkey</a> and some custom bots written is Azure Functions that sit in Slack Channels and do my bidding.</p>

CC BY-SA 3.0
2017-04-17T11:54:51.753Z
2017-04-17T11:54:51.753Z
Richard Slater
<p>I am currently building a solution on Azure (though the question should relate to AWS equally) and I am using a <code>UniqueId</code> tag to locate and use objects. </p>

<p>For instance, we have a storage account that is used for caching applications' blobs. The storage account is created with a random name but is found and presented to the application through its <code>UniqueId=AppCache</code> tag. </p>

<p>At the moment I am taking the approach that as more tags become useful I'll start to add them. </p>

<p>Ultimately we're looking for a hands off 'ChatOps' style solution. So everything created should be automated. </p>

<p>Should I be looking at a structured approach to tagging (and what does that look like) or is the organic approach more sensible? </p>

<amazon-web-services><azure>
How to use tags in Amazon Web Services and Azure
Michael B
# How to use tags in Amazon Web Services and Azure

(Asked by: username_0 on 2017-04-17)

I am currently building a solution on Azure (though the question should relate to AWS equally) and I am using a `UniqueId` tag to locate and use objects.

For instance, we have a storage account that is used for caching applications' blobs. The storage account is created with a random name but is found and presented to the application through its `UniqueId=AppCache` tag.

At the moment I am taking the approach that as more tags become useful I'll start to add them.

Ultimately we're looking for a hands off 'ChatOps' style solution. So everything created should be automated.

Should I be looking at a structured approach to tagging (and what does that look like) or is the organic approach more sensible?

**Tags:** amazon-web-services, azure


---

## 1 answers

### Answer by username_1 on 2017-04-17. Score: 9 | Accepted answer

I would set up a base taxonomy to start with, you can use automation across your estate to ensure that all resources follow the taxonomy. You have a choice between simply deleting resources that don't comply or reporting on it to a central team who are responsible for chasing down and educating the owners.

I have followed the [Best Practice](http://www.azurefieldnotes.com/2016/07/18/azure-resource-tagging-best-practices/) set out by Microsoft for both Azure and Amazon:

* **Owner** - normally this is a team distribution list although sometimes it is an individual if it is a "10% time" project. To make sure that the e-mail address entered is valid we run a hourly scan of our estate to detect if there are new e-mail addresses in this field then send an e-mail with an activation link, failing to activate results in deletion after three days.
* **CostCenter** - the numeric cost centre, we use this to feed into the end of month reconciliation.
* **SDLCPhase** - one of `Development`, `Test`, `SIT`, `UAT`, `PerfTest`, `PreProduction`, `Production`. We use this to define different automated behavour:
  + **Development** and **Test**: deleted overnight and at weekends to save on costs. Teams are responsible for reprovisioning using the automation in the morning.
  + **SIT**, **UAT** and **PerfTest**: deleted when the cost center in our finance system is closed down.
  + **PreProduction**: scaled down overnight and when the cost center is closed down.
  + **Production**: we validate that all resources deployed to the production subscription have this tag, if they don't we send out e-mails extensively.
* **DropDeadDate** - for us, this is a required field for everything except Production. We run a nightly scan and send e-mails to the owner 7 days and 1 day before the **DropDeadDate** then delete the resource after it has passed.

In terms of the automation around this I have a tendency to use [Janitor Monkey](https://github.com/Netflix/SimianArmy/wiki/Janitor-Home) and some custom bots written is Azure Functions that sit in Slack Channels and do my bidding.


---

