AWS JAPAN APN ブログ

AWS Marketplace での SaaS 統合のステップバイステップガイド

本記事は、2025 年 11 月 3 日に公開された「Step-by-Step Guide to SaaS Integration with AWS Marketplace」を翻訳したものです。

AWS Marketplace は、組織の運用コストと導入時間の削減に役立つサードパーティの Software-as-a-Service (SaaS) 製品を提供しています。スタートアップからエンタープライズまで、あらゆる組織が合理化された調達プロセスを通じて、サードパーティの SaaS ソリューションを迅速に検索、評価、購入ができます。これらのソリューションは、インフラストラクチャ管理の負担を排除し、ビジネスアプリケーションの価値実現時間を短縮します。

新しい製品を出品する際、販売者は SaaS 統合要件を完了する必要があります。この記事では、SaaS 製品の統合に必要な具体的なステップに焦点を当てます。この記事は、AWS Marketplace で SaaS 製品を出品するための統合要件をガイドします。これは、SaaS クイックスタート、サポートドキュメント、ラボを含む既存のリソースの補完として機能します。

AWS Marketplace SaaS 統合は、いくつかの連続したステップで構成されています。ResolveCustomer API は、トークンを顧客 ID と交換することで顧客を検証します。GetEntitlement API は契約ディメンションを検証し、Amazon Simple Notification Service (Amazon SNS) トピックはサブスクリプションの変更を監視します。AWS Marketplace は標準的な価格設定モデルと消費ベースの価格設定モデルの両方を提供し、販売者は BatchMeterUsage API を通じて使用量を追跡します。この統合は、安全な認証とアクセス管理を提供しながら、顧客のオンボーディングプロセスを合理化します。

SaaS 統合を完了するプロセスを説明し、従量制料金による SaaS 契約製品に必要なものを示すために例を使用します。

前提条件

以下の前提条件を完了している必要があります:

従量制料金による SaaS 契約の統合

リスティング、ランディングページ、SNSセットアップ、エンタイトルメント、メータリングをカバーするAWS Marketplace SaaS統合ステップ

図 1:SaaS 統合のフロー図

ステップ 1:新規顧客の受け入れ

顧客は AWS Marketplace で販売者の SaaS 製品をサブスクライブします。AWS Marketplace は顧客を販売者の登録ランディングページにリダイレクトします。販売者は、このランディングページを AWS インフラストラクチャ内でホストおよび管理し、顧客のオンボーディングプロセスを開始します。ランディングページで、顧客はアカウントを作成し、製品設定を開始し、サービス環境にアクセスできます。

AWS インフラストラクチャ内に登録ランディングページを設定し、SaaS リスティングに URL を提供します。x-amzn-marketplace-token を受け入れて処理するようにページを設定します。

ステップ 2:新規顧客の検証

顧客が製品をサブスクライブすると、フルフィルメント URL (販売者のランディングページ) にリダイレクトされます。リダイレクトは POST リクエストで、4 時間有効な一時トークンが含まれています。

以下の図は、このステップ 2 で新規顧客を検証するワークフローを示しています。

HTTP POSTリクエスト処理、顧客解決、エンタイトルメントチェックを含む、AWS Marketplaceでの顧客検証プロセスを示す技術フローチャート。図にはデータベースストレージと異なる顧客タイプのシナリオ処理が含まれています。

図 2:AWS Marketplace の顧客検証とエンタイトルメントチェックプロセスフロー

SaaS 統合では、AWS Marketplace Metering Service の ResolveCustomer API を呼び出して、トークンを顧客 ID と交換する必要があります。

以下のコード例は、販売者が送信するリクエストです。ユースケースに応じて regToken 値を追加してください:

トークンを顧客IDと交換するサンプルコード

図 3:トークンを顧客 ID と交換するサンプルコード

以下は AWS Marketplace からの応答です:

HTTP POSTリクエスト処理、顧客解決、エンタイトルメントチェックを含む、AWS Marketplaceでの顧客検証プロセスを示す技術フローチャート。図にはデータベースストレージと異なる顧客タイプのシナリオ処理が含まれています。

図 4:トークンを顧客 ID と交換した後の AWS Marketplace からの応答

顧客 ID を取得したら、将来の呼び出しのためにアプリケーションまたはデータベースに永続化します。

顧客 ID を使用して、AWS Marketplace Entitlement Service で GetEntitlement を呼び出し、顧客がサブスクライブしているディメンションと、該当する場合は数量を確認します。これは次のステップで示されます。

ステップ 3:SNS トピックのサブスクライブ

Amazon Simple Queue Service (SQS) キューを設定し、SNS トピックをサブスクライブします。これにより、顧客のサブスクリプションとエンタイトルメントステータスの変更に関する通知が提供されます。これは、特定の顧客に対してアクセスを提供または取り消すタイミングを示します。考えられるシナリオには、サブスクリプションの解除、変更、更新、失敗が含まれます。

  • SQS エンタイトルメントを作成するには、以下の設定を入力します:
    • 名前:任意の名前を付けてください
    • 設定:デフォルトのままにしてください
    • 暗号化:デフォルトのままにしてください
    • アクセスポリシー:詳細設定
      • リソース:arn:aws:sqs:<region>:<awsaccountid>:<SQS キュー名>
      • ArnEquals:AWS Marketplace アカウントの Entitlement Service SNS topic ARN からこれをコピーしてください

この SQS キューポリシーにより、AWS Marketplace がエンタイトルメント通知をキューに送信できるようになります。SQS メッセージを送信するには、以下のコマンドを入力します。

  • SQS サブスクリプションを作成するには、以下の設定を入力します:
    • 名前:任意の名前を付けてください。例:SaaS_Contract_with_Consumption_Subscription_SQS
    • 設定:デフォルトのままにしてください
    • 暗号化:デフォルトのままにしてください
    • アクセスポリシー:詳細設定
      • リソース:arn:aws:sqs:<region>:<awsaccountid>:<SQS キュー名>
      • ArnEquals:AWS Marketplace アカウントの Metering Service SNS topic ARN からこれをコピーしてください

この SQS キューポリシーにより、顧客が SaaS 製品を購入または解約するか、その他の方法でサブスクリプションを変更した際に、AWS Marketplace がキューにサブスクリプション通知を送信できるようになります。

ステップ 4:エンタイトルメントの検証

以下のコード例は、販売者の SaaS 統合からのリクエストです:

エンタイトルメント取得のためのSaaS統合リクエスト

図 5:SaaS 統合からのリクエスト

以下のコードは AWS Marketplace からの応答です:

統合リクエストが送信された後のAWS Marketplaceからの応答。

図 6:AWS Marketplace からの応答

エンタイトルメントがアクティブな場合、エンタイトルメントで返されたディメンションと契約期間に基づいて購入者にアクセスを許可します。オンボーディング中または継続的な検証中に GetEntitlement からエンタイトルメントが返されない場合は、アクセスの管理方法を決定してください。

エンタイトルメントが更新されるたびに、SNS トピックでメッセージを受信します。各メッセージで Lambda 関数 entitlement-sqs.js が marketplaceEntitlementService を呼び出し、応答 (CustomerIdentifier と ProductCode) を DynamoDB に保存します。SaaS 契約のエンタイトルメントの変更を検出するために同じ DynamoDB ストリームを使用しています。

  • SQS エンタイトルメントで Lambda エンタイトルメントをトリガーするには、以下の手順に従ってください:
    • register-new-subcriber.js Lambda 関数では、エンタイトルメントキューが存在するかチェックし、以下を含むエンタイトルメント更新通知で SQS メッセージを送信します:
      • アクションタイプ:”entitlement-updated”
      • 顧客識別子 (CustomerIdentifier)
      • 製品コード (ProductCode)
顧客と製品のエンタイトルメントチェック

図 7:エンタイトルメントのチェック

  • SQS で Lambda 関数 entitlement-sqs.js を作成します。詳細については、aws-marketplace-serverless-saas-integration のサンプルコードを参照してください
  • SQS Lambda エンタイトルメントで、ステップ 3 で作成した SQS エンタイトルメントをトリガーとして追加します:
    • Lambda 関数で、「設定」を選択してから「トリガー」を選択します
    • 「トリガーを追加」を選択してから「SQS」を選択します
    • SQS キューを選択します
    • 「バッチサイズ」で、呼び出しあたり 1〜10 メッセージを選択します
    • SQS Lambda エンタイトルメントに AWS Identity and Access Management (IAM) ポリシーをアタッチして、SQS エンタイトルメントからメッセージを受信できるようにします

ステップ 5:アカウント作成と製品設定ワークフロー

ワークフローで自動化を行う場合は、新規顧客を検証した後にパーティション作成と製品設定ワークフローを実装します。SaaS プラットフォームが自動オンボーディングを提供していない場合は、ランディングページに、担当者が設定された期間内に連絡してプラットフォームのオンボーディングプロセスを開始することを購入者に知らせるメッセージを含めてください。

ステップ 6:SaaS 使用量計測について

AWS Marketplace SaaS サブスクリプションの場合、販売者は AWS 請求のために顧客の使用量を計測する必要があります。標準サブスクリプションでは、すべての使用量が計測されます。従量制料金による SaaS 契約の場合、計測は契約エンタイトルメントを超過した使用量にのみ適用されます。計測を行う際、アプリケーションは、転送されたデータやスキャン活動など、事前定義された価格設定ディメンションに基づいて使用量を AWS に報告します。

毎時トリガーされる MeteringSchedule という Amazon CloudWatch Events ルールを作成します。このルールは metering-hourly-job.js スクリプトを実行し、2 つの主要な機能を実行します:

  1. PendingMeteringRecordsIndex を使用して、AWSMarketplaceMeteringRecords テーブルから保留中または未報告の計測レコードをクエリします
  1. これらのレコードを customerIdentifier とディメンション名で集約してから、SQSMetering キューに送信します

AWSMarketplaceMeteringRecords テーブルには、SaaS アプリケーションからのプログラムによる更新が必要です。これを有効にするには、AWSMarketplaceMeteringRecords テーブルに対する使用量データ収集サービスに適切な書き込み権限を付与してください。

AWS Lambda 関数 metering-sqs.js は、キューに入れられた計測レコードを AWS Marketplace Metering Service に送信します。BatchMeterUsage エンドポイントへの呼び出しのたびに、AWSMarketplaceMeteringRecords テーブルの行が更新され、Metering Service から返された応答が metering_response フィールドで確認できます。リクエストが失敗した場合、meteringfailed 値 が true に設定され、問題を調査する必要があります。エラーも metering_response フィールドに保存されます。

  • AWS Marketplace Metering Service の Batch API を使用して顧客の使用量を報告するコード例:
AWS Marketplace Metering ServiceバッチAPIを使用して顧客の使用量を報告するコードスニペット例

図 8:バッチでの使用量計測のコードサンプル

  • この形式を使用して AWSMarketplaceMeteringRecords テーブルに新しいレコードを保存します:
AWSMarketplaceMeteringRecordsテーブルのレコード形式。

図 9:レコード保存テーブル形式

テーブルは、プライマリキーに 2 つの主要コンポーネント (customerIdentifier がパーティションキーとして機能し、create_timestamp がソートキーとして機能) を使用します。これらが合わさって完全なプライマリキーを形成します。新しいレコード形式は DynamoDB JSON 形式で、これは通常の JSON とは異なります。受け入れられるタイムスタンプは、UTC 時間の UNIX タイムスタンプです。

  • レコードが AWS Marketplace BatchMeterUsage API に送信された後、次のように更新されます:
AWS Marketplaceに送信されたメータリングレコード

図 10:AWS Marketplace に送信されたレコード

AWS Marketplace でのエンドツーエンドテスト

統合後の AWS Marketplace 購入者ジャーニーのテストは、完全な顧客ライフサイクルをシミュレートし、主要な API 機能を検証することで、スムーズな顧客体験と適切な AWS サービス接続を保証します。

クリーンアップ

  1. ブログから作成されたすべての IAM ロールを削除します
  2. メールに通知する SNS サブスクリプションを削除します
  3. Lambda 関数を削除します
  4. DynamoDB テーブルを削除します

まとめ

このガイドでは、AWS Marketplace での Software-as-a-Service (SaaS) 統合プロセスについて説明しました。SaaS 製品の販売を開始するには、AWS Marketplace に製品を出品し、統合要件を完了してください。AWS Marketplace は、AWS の顧客と直接つながり、自動請求を提供し、調達プロセスを簡素化します。AWS Marketplace での SaaS 製品の出品に関するより多くのリソースについては、ラボと公式ドキュメントをご確認ください。出品についてご質問がある場合は、AWS Marketplace 販売者アカウントのお問い合わせフォームを使用してチケットを送信できます。

著者について

Tuan Vo

Tuan Vo は、AWS Marketplace での製品の出品において販売者をサポートすることに専念する AWS Marketplace 専任のソリューションアーキテクトです。大企業および公共部門の顧客をサポートしています。仕事以外では、旅行、新しい料理の試食、散歩を楽しんでいます。

Yvan Tamba

Yvan は Amazon Web Services (AWS) の AMER パートナーソリューションアーキテクトとして、AMER パートナーマネジメント組織全体で AWS Marketplace の導入とマルチパーティイニシアチブを主導しています。クラウドソリューションの設計以外では、ジャズ音楽、コンテンツ作成、そしてランニングによるアクティブなライフスタイルの維持に情熱を注いでいます。

本記事は AWS 社内の生成 AI ツールで機械翻訳し、Partner SA 河原がレビューしました。原文はこちらです。

Tetsuya Kawahara

Tetsuya Kawahara

Senior Manager, Technology Partner Solutions Architecture, Japan Partner Management, Amazon Web Services Japan G.K.