翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Marketplace Metering Service によるコンテナ製品のカスタム計測
AWS Marketplace コンテナ製品は、製品ごとに最大 24 の異なる料金ディメンションでカスタム計測を設定できます。各ディメンションには、長期契約料金を関連付けることができます。カスタム計測を有効にするには、コンテナ製品を AWS Marketplace Metering Service と統合してください。MeterUsage
API オペレーションを使用して、AWS に請求するために独自の料金単位とその使用量に対するカスタム計測を定義できます。
料金ディメンションは、製品積載フォームおよび MeterUsage
オペレーションを介した 2 つの場所で定義されます。この 2 つの要素方法により、後続のオファーが一般公開される前に意図したとおりに作動することを確実にします。
カスタム計測を設定するには、使用カテゴリ、単位タイプ、料金ディメンションを選択する必要があります。
-
使用カテゴリ - 使用カテゴリは購入者が製品の内容とその使用方法を理解するために役立ちます。
-
単位タイプ - 単位タイプは請求の測定単位を定義します。例えば、GBps または MBps で測定された帯域幅、ホスト数、MB、GB、TB で測定されたデータなど。
-
料金ディメンション - 料金ディメンションは、個数ごとの料金を設定した機能またはサービス (ユーザー、スキャン、vCPU、デプロイされたエージェントなど) を表します。料金設定ディメンションは公開されています。ただし、公開されている製品については、引き続きプライベートオファーと Bring Your Own License (BYOL) を定義できます。計測レコードに料金設定を送信しないでください。単位の数量を計測すると、製品を作成するときに定義した料金と共にこれを使用して、購入者の請求書を計算します。
製品の料金設定が事前定義されたカテゴリまたは単位タイプに適合しない場合は、汎用 [単位] カテゴリを選択できます。次に、ディメンションの説明を使用して単位が何であるかを説明します。
オプションで、追跡するプロパティごとに使用量を配分することもできます。割り当ては購入者にはタグとして表示されます。これらのタグにより、購入者はコストをタグ値別に使用量に分けて表示できます。例えば、ユーザーごとに課金し、ユーザーに「Department」プロパティがある場合、「Department」のキーを持つタグを使用して使用量の割り当てを作成し、値ごとに 1 つの割り当てを行うことができます。これによってレポートする料金、サイズ、総使用量は変更されませんが、顧客は製品に適したカテゴリ別にコストを確認できます。
1 時間ごとに計測レコードを送信することをお勧めします。ただし、日単位または月単位の使用量を集計することもできます。停止が発生した場合は、購入者ソフトウェアの使用を集約し、次の時間帯に送信できます。1 時間に複数のレコードを送信することはできません。
重要
無料トライアルと前払いの使用権限は、時間単位で追跡されます。その結果、これらのレコードを別々に送信すると、購入者に過大請求が発生する可能性があります。
カスタム計測の前提条件
製品を公開する前に、次を行う必要があります。
-
AWS Marketplace 管理ポータル で新しいコンテナ製品を作成し、その製品コードを書き留めます。
-
製品積載フォームに必要なディメンション情報を入力し、処理のために当社に返送してください。
-
MeterUsage
を呼び出すために必要な IAM アクセス許可を持つアプリケーションを実行するタスクまたはポッドの AWS Identity and Access Management (IAM) ロールを使用します。IAM マネージドポリシーAWSMarketplaceMeteringRegisterUsage
には、これらのアクセス許可があります。 -
(オプション) AWS CloudTrail ロギングを表示する場合は、タスクまたはポッドの定義でロギングを有効にすることをお勧めします。
-
定義したすべての料金ディメンションのレコードを使用して、
MeterUsage
API オペレーションをテストコールします。
カスタム計測用の製品ロードフォーム
カスタム測定用の製品積載フォームに記入する場合、各製品には最大 24 のディメンションを設定できます。ディメンションは次のフィールドで定義されています。
-
[ディメンション名] - コンテナアプリケーションが AWS Marketplace Metering Service に計測レコードを送信するときに使用される名前。この名前は、購入者が使用するディメンションを示します。この名前は請求レポートに記載されます。この名前を設定した後に変更することはできません。
-
[ディメンションの説明] 購入者向けのディメンションの説明。説明は最大 70 文字です。製品が購入者に公開された後は、このフィールドを変更することはできません。
-
[ディメンション料金] - 購入者が使用ごとに支払う場合のこの製品の単位あたりのソフトウェア料金。このフィールドでは小数点以下 3 桁がサポートされています。
-
[ディメンション長期レート] - 購入者が前払いした場合の、長期契約におけるソフトウェア料金の合計です。
-
[長期期間 (日数)] - 長期契約の期間 (日単位)。
MeterUsage
の統合とプレビューモードのテスト
イメージを AWS Marketplace に送信して公開する前に、MeterUsage
オペレーションを使用して統合をテストします。
プレビューモードは稼働モードと同じように動作しますが、プレビューモードでは製品を使用する権限を確認しません。プレビューモードで MeterUsage
を呼び出すには、AWS Marketplace に製品をリストするために使用している AWS アカウント を使用して、Amazon Elastic Container Service (Amazon ECS) または Amazon Elastic Kubernetes Service (Amazon EKS) で製品を実行し、コンテナイメージから MeterUsage
を呼び出します。計測統合では、AWS リージョン をハードコーディングするのではなく、動的に設定する必要があります。ただし、テストするときは、米国東部 (バージニア北部) リージョンで少なくとも 1 つの Amazon ECS タスクまたは有料コンテナを含む Amazon EKS ポッドを起動して、AWS Marketplace オペレーションチームがそのリージョンのログを使用して作業内容を確認できるようにしてください。
注記
製品が Amazon ECS と Amazon EKS の両方をサポートしている場合は、Amazon EKS を起動するだけで、統合が検証されます。
製品および必要なすべてのメタデータと料金情報が公開されるまでは、統合を完全にテストすることはできません。リクエストされた場合、AWS Marketplace カタログオペレーションチームは、計測レコードの受け取りをプレビューモードで確認することができます。
MeterUsage
でのエラー処理
コンテナ起動時にコンテナイメージが MeterUsage
オペレーションを統合し、ThrottlingException
以外の例外を受け取る場合、コンテナイメージを終了して不正使用を防止する必要があります。
ThrottlingException
以外の例外は、MeterUsage
への最初の呼び出しでのみスローされます。同じ Amazon ECS タスクまたは Amazon EKS ポッド呼び出しからの以降の呼び出しでは、CustomerNotSubscribedException
はスローされません。タスクまたはポッドが実行されている間に顧客がサブスクリプションを解除した場合でも同様です。この顧客は、サブスクリプションを解除したあとで使用状況が追跡されると、実行中のコンテナに対して課金されます。
MeterUsage
の一般的なエラーの詳細については、「AWS Marketplace Metering Service API リファレンス」の 「MeterUsage」を参照してください。各 AWS SDK プログラミング言語には、詳細を参照できるように一連のエラー処理のガイドラインが示されています。
ベンダー計測タグ付け (オプション)
ベンダー計測タグ付けは、独立系ソフトウェアベンダー (ISV) がソフトウェアの使用状況についてより詳細な情報を購入者に提供し、コスト配分を行うのに役立ちます。
購入者が使用したソフトウェア使用状況をタグ付けするには、さまざまな方法があります。1 つの方法は、コスト配分に何を期待するかを購入者にたずねます。次に、購入者のアカウントで追跡するプロパティ全体で使用量を分割できます。プロパティの例には、AccountId
、Business Unit
、Cost Centers
、および商品に関連する他のメタデータが含まれます。これらのプロパティはタグとして購入者に公開されます。タグを使用すると、購入者は AWS 請求コンソール (https://console.aws.amazon.com/billing/
一般的なユースケースでは、購入者が 1 つの AWS アカウント を使って商品を購読します。また、購入者には同じ製品サブスクリプションに関連するユーザーが多数います。AccountId
のキーを持つタグを使用して使用量の割り当てを作成し、各ユーザーに使用量を割り当てることができます。この場合、購入者は Billing and Cost Management コンソールで AccountId
タグを有効にして、個々のユーザーの使用状況を分析できます。
販売者のエクスペリエンス
販売者は、すべてのリソースの使用量を集計する代わりに、同じタグセットを使用してリソースの計測レコードを集計できます。例えば、販売者は UsageAllocations
の異なるバケットを含む計測レコードを作成できます。各バケットは、AccountId
や BusinessUnit
などの、タグのセットの UsageQuantity
を表します。
以下の図では、[リソース 1] には固有の AccountId
と BusinessUnit
タグセットがあり、[計測レコード] に 1 つのエントリとして表示されます。
[リソース 2] と [リソース 3] にはどちらも同じ AccountId
タグ、2222
、および同じ BusinessUnit
タグ Operations
があります。その結果、これらは [計測レコード] の 1 つの UsageAllocations
エントリにまとめられます。
また、販売者は、タグのないリソースを割り当てられた使用量の単一の UsageAllocation
にまとめて、UsageAllocations
のエントリの 1 つとして送信することもできます。
制限には以下が含まれます。
-
タグの数 - 5
-
UsageAllocations
のサイズ (カーディナリティ) - 2,500
検証には次の項目が含まれます。
-
タグのキーと値に使用できる文字 - a-zA-Z0-9+ -=._:\/@
-
UsageAllocation
リスト全体の最大タグ数 - 5 -
2 つの
UsageAllocations
タグに同じタグ (つまり、同じタグキーと値の組み合わせ) を持つことはできません。その場合は、同じUsageAllocation
を使用する必要があります。 -
UsageAllocation
のAllocatedUsageQuantity
の合計は、総使用量であるUsageQuantity
と等しくなる必要があります。
購入者エクスペリエンス
次の表は、購入者が AccountId
および BusinessUnit
ベンダータグを有効化した後の購入者エクスペリエンスの例を示しています。
この例では、購入者は [コスト使用状況レポート] で割り当てられた使用量を確認できます。ベンダー計測タグにはプレフィックス “aws:marketplace:isv”
が使用されます。購入者は、請求情報とコスト管理の、[コスト配分タグ]、[AWS 生成コスト配分タグ] でそれらを有効化できます。
[コスト使用状況レポート] の最初と最後の行は、出品者が Metering Service に送信する内容に関係します (販売者のエクスペリエンス 例を参照)。
コスト使用状況レポート (簡略版) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ProductCode | 購入者 | UsageDimension | UsageQuantity | aws:marketplace:isv:AccountId |
aws:marketplace:isv:BusinessUnit |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | ネットワーク: 検査対象 (GB) あたり | 70 | 2222 | 操作 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | ネットワーク: 検査対象 (GB) あたり | 30 | 3333 | 財務 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | ネットワーク: 検査対象 (GB) あたり | 20 | 4444 | IT | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | ネットワーク: 検査対象 (GB) あたり | 20 | 5555 | マーケティング | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | ネットワーク: 検査対象 (GB) あたり | 30 | 1111 | マーケティング |
コード例については、使用量割り当てタグ付きの MeterUsage コード例 (オプション) を参照してください。
コードサンプル
次のコード例は、製品の公開およびメンテナンスに必要な AWS Marketplace API とコンテナ製品を統合するのに役立てることを目的として提供されています。
使用量割り当てタグ付きの MeterUsage
コード例 (オプション)
次のコード例は、消費料金モデルを持つコンテナ製品に関連しています。Python の例では、従量制料金を顧客に請求するために、適切な使用量割り当てタグを含む計測レコードを AWS Marketplace に送信します。
# NOTE: Your application will need to aggregate usage for the # customer for the hour and set the quantity as seen below. # AWS Marketplace can only accept records for up to an hour in the past. # # productCode is supplied after the AWS Marketplace Ops team has # published the product to limited # Import AWS Python SDK import boto3 import time usageRecord = [ { "AllocatedUsageQuantity": 2, "Tags": [ { "Key": "BusinessUnit", "Value": "IT" }, { "Key": "AccountId", "Value": "123456789" }, ] }, { "AllocatedUsageQuantity": 1, "Tags": [ { "Key": "BusinessUnit", "Value": "Finance" }, { "Key": "AccountId", "Value": "987654321" }, ] } ] marketplaceClient = boto3.client("meteringmarketplace") response = marketplaceClient.meter_usage( ProductCode="testProduct", Timestamp=int(time.time()), UsageDimension="Dimension1", UsageQuantity=3, DryRun=False, UsageAllocations=usageRecord )
MeterUsage
の詳細については、「AWS Marketplace Metering Service API リファレンス」の「MeterUsage」を参照してください。
レスポンスの例
{ "MeteringRecordId": "string" }