Allocation Rules

Allocation Process

Cost is allocated during the cost processing. Cost line items are filtered by allocation rules in order of priority and are associated with a context path. Once allocated the line item is not considered for any other context.

Priority

Allocation rules are evaluated starting with the lowest priority first and then to the highest priority. A blank priority means that it has the highest priority and will be evaluated last.

Creating a Hierarchy/Rule

The name of the rule will be seen in Yotascale’s hierarchy. A rule and priority can be blank.

SQL

The rules are like where clause in an SQL. A single expression can have multiple clauses joined by AND & OR operators along with parentheses for precedence.

Structure of a Rule

Following keys/attributes are supported on the left-hand-side of the operator

  • Any of the 30 Yotascale tags (Team, Name, User, Cost Center, Project, Environment, Owner, Pod, EMR job Flow ID, EMR Role, CreatedBy, application, custom_1, etc.) NOTE: These tag categories can be renamed so verify the tag before using it.

  • region

  • productname (Amazon Elastic Compute Cloud, Amazon Simple Storage Service, etc.)

  • linkedaccountid

  • database_engine

  • operating_system

  • ys_type (Cost, Taxes, RIFee, Discounts, Annual Fee, Support)

  • ys_usagetypegroup (Others, Network, Access, Instance, Storage, Load Balancer, Container Runtime, MultiInstance)

  • reservedinstance (Y, N)

  • namespace

  • ys_cluster_type (Kubernetes, ECS, EKS)

  • clusterUUID (Cluster Name)

  • lower()

  • lower(regexp_replace())

Operators

Following operators are supported in the rule expression

  • =

  • !=

  • like

  • is not null

  • in

  • not in

Examples

`Team` = 'Finance'

`Team` In ('Developer Services', 'Developer-Services')

`Team` = 'Developer Services' OR `Team` = 'Developer-Services'

(`AWS Account` = ('999999999999') ) OR (`AWS Account` = ('999999999999') ) OR (`AWS Account` = ('999999999999') ) OR (`AWS Account` = ('999999999999') ) OR (`AWS Account` = ('999999999999') )

`Team` In ('Data', 'Data-Infra', 'data-infra', 'Data-infra', 'data-infra', 'DE', 'DI', 'di', 'DSA', 'dsa', 'DSA Unknown') OR `Team` like '%Foo%' OR `Team` like 'Analytics%'

`Operating Hours` = 'DEVOPS' AND `Environment` In ('DEV', 'Dev', 'dev', 'STAGING', 'Staging', 'staging', 'stg', 'TEST')

`AWS Service` = ('AWS Lambda') AND `Environment` In ('DEV', 'Dev', 'dev', 'STAGING', 'Staging', 'staging', 'stg', 'TEST')

application` LIKE 'Discovery%'

Cost Processing

Once a new rule/hierachy is implemented, notify Support to rerun Cost Processing in order for the hierarchy to get cost data.

 

Copyright 2023 Yotascale, Inc. All Rights Reserved. Yotascale and the Yotascale logo are trademarks of Yotascale, Inc.