AWS Marketplace Metering Serviceを使用した AMI 製品のカスタム計量 - AWS Marketplace

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

AWS Marketplace Metering Serviceを使用した AMI 製品のカスタム計量

販売者が使用カテゴリに従って自身のソフトウェアに対して直接請求するために使用できる料金表および計測機能として、AWS Marketplace Metering Service が提供されています。ユーザー、データ、帯域幅、ホスト、ユニットの 5 つの使用カテゴリがあります。Metering Service は、Amazon マシンイメージ (AMI) ベース、コンテナベース、および Software as a Service (SaaS) ベースの製品で利用できます。詳細については、「AWS Marketplace Metering Service API Reference」を参照してください。

Metering Service を使用するすべての AMI ベースのソフトウェアは次の要件を満たしている必要があります。

  • ソフトウェアは、Amazon マシンイメージ (AMI) AWS Marketplace を介して から起動する必要があります。

  • に既存の製品がある場合は AWS Marketplace、新しい AMI を送信し、新しい製品を作成してこの機能を有効にする必要があります。

  • すべてのソフトウェアは、 AWS Identity and Access Management (IAM) ロールでプロビジョニングする必要があります。エンドカスタマーは、ユーザーがそのソフトウェアでプロビジョニングしている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに IAM ロールを追加する必要があります。を使用してソフトウェアをデプロイする場合、IAM ロールの使用はオプションです AWS Marketplace。これは AWS Marketplace Metering Service ソフトウェアをデプロイするときに必要です。

  • ソフトウェアでは、何らかの方法で消費量を決定できる必要があります。

Metering Service を使用する製品では、単一の使用カテゴリごとにお客様に請求する必要がありますが、単一のカテゴリの最大 24 個のディメンションを定義できます。カテゴリに応じて、プロビジョニングされたリソース、同時実行リソース、または累積リソースの消費量によってソフトウェアを価格設定できます。料金はすべて、お客様によって時間料金で請求されます。すべての使用量は、既存の AWS Marketplace ソフトウェアと同じメカニズムを使用して毎月計算され、請求されます。

AWS Marketplace Metering Service では、いくつかの新しいシナリオが利用可能になります。たとえば、ソフトウェアでホストをモニタリングしている場合は、モニタリングされたホストごとに料金を請求できます。ホストのサイズに基づいて異なる料金を設定でき、モニタリングされる 1 時間ごとの同時実行ホスト数に対して課金できます。同様に、組織全体で多数のユーザーがソフトウェアにサインインできる場合は、ユーザー数によって課金できます。1 時間ごとに、プロビジョニングされたユーザーの合計数が請求されます。

AWS Marketplace Metering Service の呼び出し

ソフトウェアを使用して、時間単位で Metering Service を呼び出し、その時間の消費値を記録する必要があります。

ソフトウェアが起動すると、起動 minute-of-the-hour した が記録されます。これは、start-minute と呼ばれます。起動時間の 1 時間ごとに、ソフトウェアはその時間の消費量を判断し、Metering Service を呼び出します。この値を取得する方法の詳細については、「Metering Service を使用するためのソフトウェアの変更」を参照してください。

1 時間ごとの開始時間に起動するには、以下のいずれかのアプローチをソフトウェアで使用する必要があります。

  • ソフトウェア内のスレッド。

  • インスタンスまたはソフトウェアで起動するデーモンプロセス。

  • アプリケーションのスタートアップ時に設定される cron ジョブ。

    注記

    お客様のソフトウェアで、顧客のインスタンスに設定された IAM ロールを使用して AWS Marketplace Metering Service を呼び出し、消費のディメンションと量を指定する必要があります。

ソフトウェアは AWS SDK を使用して、次の実装例のように AWS Marketplace Metering Service を呼び出すことができます。

  1. サービスクライアントを作成するにはインスタンスプロファイルを使用します。そのためには、EC2 インスタンス用に設定されたロールが必要です。このロールの認証情報は、SDK によって自動的に更新されます。

  2. 1 時間ごとに、ソフトウェア設定とステータスを確認し、その時間の消費値を決定します。これには、 の収集が含まれる場合があります value-per-dimension。

  3. 次のパラメータを指定して、SDK クライアントの meterUsage メソッドを呼び出します (使用量があるディメンションごとに追加で呼び出す)。

    • timestamp - 記録中の時間のタイムスタンプ (UTC で)。

    • productCode - ソフトウェアに割り当てられた製品コード。

    • dimension - ソフトウェアに割り当てられた 1 つのディメンション (または複数のディメンション)

    • quantity - ある時間の消費値。

    • allocations - (オプション) 追跡するプロパティ全体にわたって使用量を割り当てることができます。これらの割り当てを合計すると、レコード内の総消費量になる必要があります。購入者には、これらは請求ツール ( AWS Billing and Cost Management コンソールなど) に潜在的なコスト配分タグとして表示されます。購入者がこれらのタグを使用してコストを追跡するには、アカウントでタグを有効にする必要があります。

さらに、ソフトウェアを使用して、リージョン内の AWS Marketplace Metering Service エンドポイントを呼び出す必要があります。製品に適切なリージョンのエンドポイントが設定されている必要があります。そのため、記録は us-east-1 より us-east-1 エンドポイント、us-west-2 より us-west-2 エンドポイントに送信されます。リージョン内呼び出しを行うと、購入者にはより安定したエクスペリエンスが提供され、無関係なリージョンのアベイラビリティーが別のリージョンで実行されているソフトウェアに影響を及ぼすことを防ぐことができます。

サービスに計測レコードを送信するときは、リージョンの AWS Marketplace Metering Service に接続する必要があります。getCurrentRegion() ヘルパーメソッドを使用して、EC2 インスタンスが実行されているリージョンを特定し、このリージョンの情報を MeteringServiceClient コンストラクタに渡します。SDK コンストラクタ AWS リージョン で を指定しない場合、デフォルトのus-east-1リージョンが使用されます。アプリケーションでサービスへのクロスリージョンコールを行うと、拒否されます。詳細については、「アプリケーションの現在のリージョンの決定」および「()」を参照してください。 getCurrentRegion

障害処理

製品は、公共のインターネットエンドポイントであるサービスに計測レコードを送信する必要があるため、使用状況をキャプチャして請求することができます。顧客は計測レコードの配信を妨げる方法でネットワーク設定を変更する可能性があるため、製品は障害モードを選択することで考慮する必要があります。

注記

一部の計測障害は、 への接続における一時的な問題である可能性があります AWS Marketplace Metering Service。 AWS Marketplace では、短期的な停止やネットワークの問題を避けるため、最大 30 分間の再試行をエクスポネンシャルバックオフで実装することを強くお勧めします。

通常、ソフトウェアはフェイルオープン (警告メッセージを表示しながら完全な機能を維持する) か、またはフェイルクローズ (接続が再確立されるまでアプリケーション内のすべての機能を無効にする) を行うことができます。フェイルオープン、フェイルクローズ、またはアプリケーション固有の機能を選択できます。2 時間以内の計測に失敗した場合は、フェイルクローズを行わないことをお勧めします。

部分的なフェイルオープンの場合の一例として、ソフトウェアへのアクセスを引き続き許可することはできますが、購入者がソフトウェア設定を変更することはできません。または、購入者はソフトウェアに引き続きアクセスできますが、追加のユーザーを作成することはできません。ソフトウェアを使用して、この障害モードを定義して実行する必要があります。AMI の送信時、ソフトウェアの障害モードを含む必要があります。また、後に変更することはできません。

制限事項

Metering Service 対応ソフトウェアを設計および送信する場合、次の制約事項に留意してください。

  • お客様の IAM ロールとインターネットゲートウェイの要件 - お客様はインターネットゲートウェイを持ち、特定のアクセス許可を持つ IAM ロールでソフトウェアを起動する必要があります。詳細については、「AWS Marketplace 計測と使用権限 API のアクセス許可」を参照してください。これらのうち 2 つの条件が満たされない場合、ソフトウェアは Metering Service に接続できません。

  • 既存の Metering Service product 製品への新しい使用カテゴリの追加および変更の不可 - お客様は、ソフトウェア製品をサブスクライブすると、利用規約に同意したものと見なされます。Metering Service を使用して製品の使用カテゴリを変更するには、新しい製品と新しいサブスクリプションが必要です。

  • 既存の Metering Service 製品のディメンションの変更の不可 - お客様は、ソフトウェア製品をサブスクライブすると、利用規約に同意したものと見なされます。Metering Service を使用して製品のディメンションを変更するには、新しい製品と新しいサブスクリプションが必要です。既存の製品には、最大 24 個まで新しいディメンションを追加できます

  • 無料トライアルおよび年間サブスクリプションは利用不可 - Metering Service 製品は、起動時に無料トライアルおよび年間サブスクリプションをサポートしていません。

  • マルチインスタンスまたはクラスターベースのデプロイメントに関する考慮事項 - 一部のソフトウェアは、マルチインスタンスデプロイメントの一部としてデプロイされます。ソフトウェアの設計時には、消費量を計測する方法と場所、および計測レコードが出力される場所を検討してください。

コード例

次のコード例は、製品の公開およびメンテナンスに必要な AWS Marketplace API と AMI 製品を統合するのに役立てることを目的として提供されています。

使用量配分タグ付き MeterUsage (オプション)

次のコード例は、消費料金モデルを持つ AMI 製品に関連しています。Python の例では、適切な使用量割り当てタグを含む計測レコードを AWS Marketplace に送信して、顧客に料金を請求します pay-as-you-go 。

# 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、「 Metering Service API リファレンスMeterUsage」の「」を参照してください。 AWS Marketplace

レスポンスの例

{ "MeteringRecordId": "string" }