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

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

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

AWS Marketplace Metering Service は、使用カテゴリ別にソフトウェアを直接請求するために使用できる料金と計測機能です。ユーザー、データ、帯域幅、ホスト、ユニットの 5 つの使用カテゴリがあります。Amazon Machine Image (AMI) ベースの製品、コンテナベースの製品、Software as a Service (SaaS) ベースの製品で Metering Service を使用できます。以下のセクションでは、 AWS Marketplace Metering Service でカスタム計測を設定する方法について詳しく説明します。

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

詳細については、AWS Marketplace 「 計測サービスAPIリファレンス」を参照してください。

要件

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

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

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

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

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

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 製品は、起動時に無料トライアルおよび年間サブスクリプションをサポートしていません。

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

コード例

次のコード例は、AMI製品を製品の公開と保守 AWS Marketplace APIsに必要な と統合するのに役立ちます。

使用量配分タグ付き 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、「 計測サービスリファレンスMeterUsage」の「」を参照してください。 AWS Marketplace API

レスポンスの例

{ "MeteringRecordId": "string" }