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. 요금 표시 - ListPurchaseOptions, GetOffer및를 호출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를 사용하여 제품에 사용할 수 있는 제안을 찾은 다음 GetOfferGetOfferTerms를 사용하여 자세한 요금을 검색합니다. 고객이 옵션을 평가하는 데 도움이 되는 요금 모델, 요금 카드 및 기간 세부 정보를 표시합니다.

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(GetProduct, GetOffer, GetOfferTerms)를 호출합니다.

참고

Discovery API는 SaaS AWS Marketplace, AI 에이전트 및 도구, AMI, 컨테이너, 기계 학습 모델을 포함한의 모든 제품 유형을 지원합니다. 인터페이스에 카탈로그의 전체 너비가 표시될 수 있습니다.