

AWS Marketplace API 참조가 재구성되었습니다. 지원되는 API 작업에 대한 자세한 내용은 [AWS Marketplace API 참조](https://docs.aws.amazon.com/marketplace/latest/APIReference/Welcome.html)를 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 카탈로그 데이터를 사용하여 인터페이스 구축
<a name="build-interfaces-with-catalog-data"></a>

 AWS Marketplace Discovery API를 사용하여 프로그래밍 방식으로 카탈로그에 액세스하고 자체 플랫폼에 제품 및 요금 정보를 표시할 수 있습니다. 이 섹션에서는 Discovery API를 사용하여 매장, 파트너 포털, 고객이 탐색할 수 있는 통합 영업 경험과 같은 사용자 지정 인터페이스를 구축하는 방법을 설명합니다.

## 아키텍처 개요
<a name="discovery-seller-architecture"></a>

일반적인 통합은 다음 패턴을 따릅니다.

1. **경험 찾아보**기 - `SearchListings`를 호출하여 검색 텍스트 및 필터를 기반으로 목록 요약`SearchFacets`을 검색하고 범주 탐색 및 필터 옵션을 개수로 채웁니다.

1. **제품 세부 정보 페이지** - `GetListing` 또는를 호출`GetProduct`하여 전체 제품 세부 정보, 미디어 및 리뷰를 표시합니다.

1. **요금 표시** - `ListPurchaseOptions`, `GetOffer`및를 호출`GetOfferTerms`하여 요금 옵션을 표시합니다.

## 찾아보기 경험 구축
<a name="discovery-seller-browse"></a>

`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']}")
```

## 빌드 제품 세부 정보 페이지
<a name="discovery-seller-product-pages"></a>

`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
    }
```

## 요금 정보 표시
<a name="discovery-seller-pricing"></a>

`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
```

## 모범 사례
<a name="discovery-seller-best-practices"></a>
+ **캐시 응답** - 제품 및 요금 데이터가 자주 변경되지 않습니다. API 응답을 15\~60분 동안 캐시하여 API 호출을 줄이고 페이지 로드 시간을 개선합니다.
+ **페이지 매김 처리** - 페이지 매김 작업에서 모든 결과를 검색`nextToken`하는 데 사용합니다. 페이지 매김 토큰은 24시간 후에 만료됩니다.
+ **재시도 로직 구현 **- `ThrottlingException` (HTTP 429) 응답에 지수 백오프를 사용합니다.
+ **표시 속성** - 플랫폼에 AWS Marketplace 데이터를 표시할 때 [AWS 상표 지침을](https://aws.amazon.com/trademark-guidelines/) 따릅니다.
+ **API 호출 최소화 **- 요약 데이터에 `SearchListings`를 사용하고 사용자가 특정 제품으로 이동할 때만 세부 정보 APIs(`GetProduct`, `GetOffer`, `GetOfferTerms`)를 호출합니다.

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