View a markdown version of this page

カタログデータを使用してインターフェイスを構築する - AWS Marketplace

AWS Marketplace API リファレンスが再構築されました。サポートされている API オペレーションの詳細については、AWS Marketplace API リファレンスを参照してください。

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

カタログデータを使用してインターフェイスを構築する

AWS Marketplace Discovery API を使用して、プログラムでカタログにアクセスし、独自のプラットフォームで製品と料金情報を表示できます。このセクションでは、Discovery API を使用して、お客様がナビゲートするためのストアフロント、パートナーポータル、統合販売エクスペリエンスなどのカスタムインターフェイスを構築する方法について説明します。

アーキテクチャの概要

一般的な統合は次のパターンに従います。

  1. ブラウズエクスペリエンス — を呼び出しSearchListingsて検索テキストとフィルターに基づいてリストの概要を取得し、カテゴリナビゲーションとフィルターオプションSearchFacetsにカウントを入力します。

  2. 製品詳細ページGetListingまたは GetProductを呼び出して、製品の詳細、メディア、レビュー全体を表示します。

  3. 料金表示ListPurchaseOptionsGetOffer、および を呼び出しGetOfferTermsて料金オプションを表示します。

ブラウズエクスペリエンスを構築する

を使用してSearchListings、検索テキストとフィルターに基づいてリスト概要を取得し、動的フィルターナビゲーションを構築SearchFacetsします。ファセットには、カテゴリ、フルフィルメントタイプ、料金モデル、料金単位、パブリッシャー、デプロイステータスが含まれます。各ファセット値には一致するリストの数が含まれており、フィルターオプションと一緒に表示できます。

import boto3 client = boto3.client('marketplace-discovery', region_name='us-east-1') # Get facet values for building filter navigation facets = client.search_facets( facetTypes=['CATEGORY', 'FULFILLMENT_OPTION_TYPE', 'PRICING_MODEL'] ) for facet_type, values in facets['listingFacets'].items(): print(f"\n{facet_type}:") for facet in values: print(f" {facet['displayName']} ({facet['count']})") # Search listings with filters applied from user selections response = client.search_listings( searchText='machine learning', filters=[ { 'filterType': 'CATEGORY', 'filterValues': ['Machine Learning'] }, { 'filterType': 'PRICING_MODEL', 'filterValues': ['USAGE'] } ], sortBy='RELEVANCE', maxResults=25 ) for listing in response['listingSummaries']: print(f"{listing['listingName']} - {listing['shortDescription']}")

製品詳細ページの構築

GetListing または GetProductを使用して、製品の詳細、メディア、レビュー全体を表示します。バッジ、カテゴリ、料金概要など、出品の概要GetListingが必要な場合は、 を使用します。説明、ハイライト、メディアなどの詳細な製品情報GetProductが必要な場合に使用します。を呼び出しListFulfillmentOptionsて、特定の製品のデプロイオプションを取得します。

def get_product_page_data(listing_id, product_id): """Retrieve data for a product detail page.""" # Use GetListing for listing-level overview listing = client.get_listing(listingId=listing_id) # Or use GetProduct for detailed product information product = client.get_product(productId=product_id) # Get deployment options for the product fulfillment = client.list_fulfillment_options(productId=product_id) return { 'listing': listing, 'product': product, 'fulfillmentOptions': fulfillment }

料金情報を表示する

ListPurchaseOptions を使用して製品の利用可能なオファーを検索し、 GetOffer GetOfferTermsを使用して詳細な料金を取得します。料金モデル、レートカード、期間の詳細を表示して、顧客がオプションを評価するのに役立ちます。

def get_pricing_for_product(product_id): """Retrieve pricing options for display.""" options = client.list_purchase_options( filters=[{ 'filterType': 'PRODUCT_ID', 'filterValues': [product_id] }] ) pricing = [] for option in options.get('purchaseOptions', []): for entity in option['associatedEntities']: offer = client.get_offer( offerId=entity['offer']['offerId'] ) terms = client.get_offer_terms( offerId=entity['offer']['offerId'] ) pricing.append({ 'option': option, 'offer': offer, 'terms': terms }) return pricing

ベストプラクティス

  • キャッシュレスポンス — 製品と料金データの変更はまれです。API レスポンスを 15~60 分間キャッシュして、API コールを減らし、ページのロード時間を短縮します。

  • ページ分割の処理 — ページ分割されたオペレーションからすべての結果を取得nextTokenするために使用します。ページ分割トークンは 24 時間後に期限切れになります。

  • 再試行ロジックの実装ThrottlingException (HTTP 429) レスポンスにはエクスポネンシャルバックオフを使用します。

  • 表示属性 — プラットフォームに AWS Marketplace データを表示するときは、AWS 商標ガイドラインに従ってください。

  • API コールの最小化 — ユーザーが特定の製品に移動するときに、SearchListingsサマリーデータおよびコール詳細 APIs (GetProductGetOfferGetOfferTerms) にのみ使用します。

注記

Discovery API は、SaaS AWS Marketplace、AI エージェントとツール、AMI、コンテナ、機械学習モデルなど、 のすべての製品タイプをサポートしています。インターフェイスでは、カタログの全範囲を表示できます。