AMI 製品のカスタム計測機能AWS Marketplace Metering Service - AWS Marketplace

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

AMI 製品のカスタム計測機能AWS Marketplace Metering Service

AWS Marketplace Metering Service が提供されています。この料金表および計測機能として、AWS Marketplace Metering Service が提供されています。使用カテゴリのうち、ユーザー、データ量、帯域幅、ホスト、またはユニットの 5 つの使用カテゴリがあります。Metering Service は、Amazon Machine Image (AMI) ベース、および SaaS (SaaS) ベースの製品で利用できます。詳細については、「AWS Marketplace Metering Service API Reference」を参照してください。

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

  • ソフトウェアは、Amazon Machine Image (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 それが始まった。これは、開始時間-分。起動時間の 1 時間ごとに、ソフトウェアはその時間の消費量を取得し、Metering Service を呼び出します。この値を取得する方法の詳細については、linkend=」を参照してください。custom-metering-pricing-ami-製品」endterm=」custom-metering-pricing-ami-products.title」/> セクション。

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

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

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

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

    注記

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

お使いのソフトウェアはAWSAWS Marketplace Metering Service を呼び出して次の例のような実装を行えます。

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

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

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

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

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

    • dimension— ソフトウェアに割り当てられたディメンション (またはディメンション)。

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

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

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

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

障害処理

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

注記

一部のメータリング障害は、AWS Marketplace Metering Service。AWS Marketplace短期間の停止やネットワークの問題を避けるために、指数関数的にバックオフした状態で最大 30 分間の再試行を実装することを強く推奨します。

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

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

制約事項

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

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

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

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

  • 無料トライアルと年間購読の欠如— Metering Service 製品は、起動時に無料トライアルも年間サブスクリプションもサポートしていません。

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

コードサンプル

次のコード例は、AMI 製品をAWS Marketplace製品の公開と保守に必要な API。

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「」を参照してください。MeterUsageAWS MarketplaceMetering Service API リファレンス

レスポンスの例

{ "MeteringRecordId": "string" }