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 契約製品に必要なものを示すために例を使用します。
前提条件
以下の前提条件を完了している必要があります:
- AWSMarketplaceSellerFullAccess 権限を持っている
- AWS Marketplace で販売者として登録している
- AWS Marketplace で SaaS 製品を作成している
- AWS Marketplace で SaaS リスティングを制限あり状態で公開している
- SaaS フルフィルメント URL (ランディングページ) を準備している
従量制料金による SaaS 契約の統合
図 1:SaaS 統合のフロー図
ステップ 1:新規顧客の受け入れ
顧客は AWS Marketplace で販売者の SaaS 製品をサブスクライブします。AWS Marketplace は顧客を販売者の登録ランディングページにリダイレクトします。販売者は、このランディングページを AWS インフラストラクチャ内でホストおよび管理し、顧客のオンボーディングプロセスを開始します。ランディングページで、顧客はアカウントを作成し、製品設定を開始し、サービス環境にアクセスできます。
AWS インフラストラクチャ内に登録ランディングページを設定し、SaaS リスティングに URL を提供します。x-amzn-marketplace-token を受け入れて処理するようにページを設定します。
ステップ 2:新規顧客の検証
顧客が製品をサブスクライブすると、フルフィルメント URL (販売者のランディングページ) にリダイレクトされます。リダイレクトは POST リクエストで、4 時間有効な一時トークンが含まれています。
以下の図は、このステップ 2 で新規顧客を検証するワークフローを示しています。
図 2:AWS Marketplace の顧客検証とエンタイトルメントチェックプロセスフロー
SaaS 統合では、AWS Marketplace Metering Service の ResolveCustomer API を呼び出して、トークンを顧客 ID と交換する必要があります。
以下のコード例は、販売者が送信するリクエストです。ユースケースに応じて regToken 値を追加してください:
図 3:トークンを顧客 ID と交換するサンプルコード
以下は 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 統合からのリクエストです:
図 5:SaaS 統合からのリクエスト
以下のコードは 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)
- register-new-subcriber.js Lambda 関数では、エンタイトルメントキューが存在するかチェックし、以下を含むエンタイトルメント更新通知で SQS メッセージを送信します:
図 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 つの主要な機能を実行します:
- PendingMeteringRecordsIndex を使用して、AWSMarketplaceMeteringRecords テーブルから保留中または未報告の計測レコードをクエリします
- これらのレコードを 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 を使用して顧客の使用量を報告するコード例:
図 8:バッチでの使用量計測のコードサンプル
- この形式を使用して AWSMarketplaceMeteringRecords テーブルに新しいレコードを保存します:
図 9:レコード保存テーブル形式
テーブルは、プライマリキーに 2 つの主要コンポーネント (customerIdentifier がパーティションキーとして機能し、create_timestamp がソートキーとして機能) を使用します。これらが合わさって完全なプライマリキーを形成します。新しいレコード形式は DynamoDB JSON 形式で、これは通常の JSON とは異なります。受け入れられるタイムスタンプは、UTC 時間の UNIX タイムスタンプです。
- レコードが AWS Marketplace BatchMeterUsage API に送信された後、次のように更新されます:
図 10:AWS Marketplace に送信されたレコード
AWS Marketplace でのエンドツーエンドテスト
統合後の AWS Marketplace 購入者ジャーニーのテストは、完全な顧客ライフサイクルをシミュレートし、主要な API 機能を検証することで、スムーズな顧客体験と適切な AWS サービス接続を保証します。
クリーンアップ
- ブログから作成されたすべての IAM ロールを削除します
- メールに通知する SNS サブスクリプションを削除します
- Lambda 関数を削除します
- DynamoDB テーブルを削除します
まとめ
このガイドでは、AWS Marketplace での Software-as-a-Service (SaaS) 統合プロセスについて説明しました。SaaS 製品の販売を開始するには、AWS Marketplace に製品を出品し、統合要件を完了してください。AWS Marketplace は、AWS の顧客と直接つながり、自動請求を提供し、調達プロセスを簡素化します。AWS Marketplace での SaaS 製品の出品に関するより多くのリソースについては、ラボと公式ドキュメントをご確認ください。出品についてご質問がある場合は、AWS Marketplace 販売者アカウントのお問い合わせフォームを使用してチケットを送信できます。
著者について
本記事は AWS 社内の生成 AI ツールで機械翻訳し、Partner SA 河原がレビューしました。原文はこちらです。