AWS Marketplace の AMI 製品のコスト配分タグ - AWS Marketplace

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Marketplace の AMI 製品のコスト配分タグ

AWS Marketplace は、Amazon マシンイメージ (AMI) ベースのソフトウェア製品のコスト配分タグをサポートしています。対応する AWS Marketplace AMI の使用状況に対して、新規および既存の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスタグが自動的に入力されます。アクティブ化されたコスト配分タグを使用して、AWS Cost Explorer、AWS のコストと使用状況レポート、AWS 予算またはその他のクラウド費用分析ツールを使用して、AMI の使用状況を特定および追跡できます。

AMI を提供したベンダーでは、製品固有の情報に基づいて、AMI ベースの製品の計測に他のカスタムタグを記録する場合もあります。詳細については、「コスト配分タグを使用する」を参照してください。

タグを使用してリソースを整理し、コスト配分タグを使用して AWS のコストを詳細レベルで追跡できます。コスト配分タグをアクティブ化すると、AWS ではコスト配分レポートのリソースコストの整理にコスト配分タグが使用されるようになります。これにより、AWS コストの分類と追跡が容易になります。

コスト配分タグは、タグが Billing and Cost Management コンソールでアクティブ化された時点からのコストのみを追跡します。AWS アカウント 所有者、AWS Organizations 管理アカウント所有者、および適切なアクセス許可を持つユーザーのみが、Billing and Cost Management コンソールにアクセスできます。コスト配分タグを使用するかどうかにかかわらず、請求額に変更はありません。コスト配分タグを使用するかどうかは、AMI ベースのソフトウェア製品の機能には影響しません。

複数のインスタンス間での 1 つの AMI のコスト配分タグの追跡

AWS Marketplace AMI サブスクリプション用に起動された各 Amazon EC2 インスタンスには、AWS のコストと使用状況レポートに対応する AWS Marketplace ソフトウェア使用状況の行項目があります。AWS Marketplace の使用には、対応する Amazon EC2 インスタンスに適用される特定のタグが常に反映されます。これにより、インスタンスレベルで割り当てられたさまざまなタグ値に基づいて AWS Marketplace の使用コストを区別できます。

また、タグベースの使用コストを合計して、Cost Explorer または AWS のコストと使用レポートのいずれかを使用して、請求書に反映された AMI ソフトウェア使用料と同額にできます。

コスト配分タグ付きインスタンスを使用した予算の検索

Billing and Cost Management コンソールで、複数の Amazon EC2 インスタンスのコスト配分タグでフィルタリング済みの有効な予算が既にある場合、それらすべてを見つけるのは難しい場合があります。次の Python スクリプトは、現在の AWS リージョン の AWS Marketplace からの Amazon EC2 インスタンスを含む予算のリストを返します。

このスクリプトを使用して、予算への潜在的な影響、およびこの変更によってオーバーランが発生する可能性がある場所を認識することができます。請求額は変更されませんが、コスト配分はより正確に反映され、これが予算に影響する可能性があることに注意してください。

#! /usr/bin/python import boto3 session = boto3.Session() b3account=boto3.client('sts').get_caller_identity()['Account'] print("using account {} in region {}".format(b3account,session.region_name)) def getBudgetFilters(filtertype): ''' Returns budgets nested within the filter values [filter value][budeget name]. The filtertype is the CostFilter Key such as Region, Service, TagKeyValue. ''' budget_client = session.client('budgets') budgets_paginator = budget_client.get_paginator('describe_budgets') budget_result = budgets_paginator.paginate( AccountId=b3account ).build_full_result() returnval = {} if 'Budgets' in budget_result: for budget in budget_result['Budgets']: for cftype in budget['CostFilters']: if filtertype == cftype: for cfval in budget['CostFilters'][cftype]: if cfval in returnval: if not budget['BudgetName'] in returnval[cfval]: returnval[cfval].append(budget['BudgetName']) else: returnval[cfval] = [ budget['BudgetName'] ] return returnval def getMarketplaceInstances(): ''' Get all the Amazon EC2 instances which originated with AWS Marketplace. ''' ec2_client = session.client('ec2') paginator = ec2_client.get_paginator('describe_instances') returnval = paginator.paginate( Filters=[{ 'Name': 'product-code.type', 'Values': ['marketplace'] }] ).build_full_result() return returnval def getInstances(): mp_instances = getMarketplaceInstances() budget_tags = getBudgetFilters("TagKeyValue") cost_instance_budgets = [] for instance in [inst for resrv in mp_instances['Reservations'] for inst in resrv['Instances'] if 'Tags' in inst.keys()]: for tag in instance['Tags']: # combine the tag and value to get the budget filter string str_full = "user:{}${}".format(tag['Key'], tag['Value']) if str_full in budget_tags: for budget in budget_tags[str_full]: if not budget in cost_instance_budgets: cost_instance_budgets.append(budget) print("\r\nBudgets containing tagged Marketplace EC2 instances:") print( '\r\n'.join([budgetname for budgetname in cost_instance_budgets]) ) if __name__ == "__main__": getInstances()

出力例:

Using account 123456789012 in region us-east-2 Budgets containing tagged Marketplace EC2 instances: EC2 simple MP-test-2

詳細については、以下の各トピックを参照してください。