

 AWS 合作夥伴中心 API 參考已重組。如需支援的 API 操作的詳細資訊，請參閱 [AWS 合作夥伴中心 API 參考](https://docs.aws.amazon.com/partner-central/latest/APIReference/Welcome.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定和身分驗證
<a name="setup-authentication"></a>

使用AWS Partner Central API 設定和驗證需要三個步驟。以下是程序的概觀：

1. 將您的AWS Marketplace賣方帳戶連結至 Partner Central。

1. 使用 IAM 設定許可。

1. 使用 Signature 第 4 版 (SigV4) 驗證您的 API 呼叫。

## 將您的AWS 帳戶連結至 Partner Central
<a name="linking-aws-account"></a>

將您的 連結至AWS 帳戶 Partner Central 是使用 API 的先決條件。如需詳細資訊，請參閱[將AWS Partner Central 帳戶與AWS Marketplace賣方帳戶連結](https://docs.aws.amazon.com/partner-central/latest/getting-started/account-linking.html)。您必須使用具有聯盟領導或雲端管理員許可的帳戶登入 Partner Central，導覽至 **Account Linking**區段，然後依照提示操作。

## 設定 IAM
<a name="setting-up-iam"></a>

若要使用AWS Partner Central API，您需要AWS Identity and Access Management(IAM) 角色或 IAM 使用者才能開始撥打電話。如需詳細資訊，請參閱[何時使用 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/when-to-use-iam.html)。請遵循AWS 帳戶指南中[建立 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)和[建立 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)的步驟。您必須在 Partner Central-linked AWS Marketplace Seller 帳戶中建立此 IAM 角色/使用者。建立 IAM 角色/使用者不會產生任何成本。

1. 建立 IAM 角色/使用者

   登入AWS Management Console，導覽至 IAM 服務，然後依照步驟建立 IAM 角色或 IAM 使用者。

1. 指派政策：

   視需要連接受管政策或建立自訂政策。若要修改或展開許可，請將其他政策套用至 IAM 角色，而不是從 複製內容並將其`AWSPartnerCentralOpportunityManagement`與其他許可結合。避免複製 受管政策，因為這樣做會阻止您在新功能發行時自動存取這些功能，而且您未來必須手動更新您的政策。如需存取政策的詳細資訊，請參閱[存取控制文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

### 管理AWS Marketplace優惠
<a name="managing-marketplace-offers"></a>

為了管理AWS Marketplace優惠並將其連結至機會，合作夥伴必須授予 IAM 角色存取目錄 APIs許可。確保角色/使用者具有許可，例如 `aws-marketplace:ListEntities`和 `aws-marketplace:SearchAgreements`。

## 驗證 API 呼叫
<a name="authenticating-api-calls"></a>

AWS Partner Central API 使用 Signature 第 4 版 (SigV4) 進行身分驗證。以下是實作方法：

### 使用AWS SDK
<a name="using-aws-sdk"></a>

AWS SDKs會自動處理請求簽署。提供您的AWS登入資料，而 SDK 會執行其餘動作。

1. 對於 Java，請參閱[提供暫時登入資料給適用於 Java 的AWS開發套件](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)。

1. 對於 Python (Boto3)，請參閱[登入](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)資料。

1. 如需 JavaScript (Node.js)，請參閱在 [Node.js 中設定登入資料。](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html)

1. 對於 .NET，請參閱[登入資料和設定檔解析](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/creds-assign.html)。

1. 如需其他程式設計語言和更多範例，請參閱[在 上建置的工具AWS](https://aws.amazon.com/tools/)。

### 不使用AWS SDK 進行身分驗證
<a name="authentication-without-sdk"></a>

如果AWS SDK 不適用於您選擇的程式設計語言，身分驗證會涉及手動建立正式請求、簽署請求，以及處理工作階段字符。AWS會提供[使用 SigV4 簽署](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)的完整指引。不過，請注意，建議使用AWS SDK，因為手動請求簽署會增加複雜性，並且需要仔細管理安全字符。

awsJson1\_0 通訊協定的每個請求都必須使用以下標頭，使用 HTTP "POST" 方法傳送至根 URL (/)。

### 必要標頭
<a name="required-headers"></a>

awsJson1\_0 通訊協定的每個 API 請求都必須使用以下標頭，使用 HTTP "POST" 方法傳送至根 URL (/)。


| 標頭 | 必要 | 說明 | 
| --- | --- | --- | 
| 內容類型 | true | 此標頭的靜態值為 application/x-amz-json-1.0。 | 
| 內容長度 | true | [RFC 9110\#section-8.6 ](https://datatracker.ietf.org/doc/html/rfc9110.html#section-8.6)定義的標準 Content-Length 標頭。 | 
| X-Amz-Target | 請求為 true | 例如， 服務CreatePartner操作的值PartnerCentralAccount為 PartnerCentralAccount.CreatePartner。 | 

## 使用自訂使用者代理程式簽署您的呼叫
<a name="signing-your-calls"></a>

向AWS Partner Central 提出 API 請求時，我們建議包含 `X-Amzn-User-Agent`標頭，以協助AWS識別用戶端應用程式的來源、監控用量和稽核效能。AWS使用此標頭來區分進行呼叫的用戶端應用程式的類型，並收集有關不同用戶端實作成功率的洞見。

### 自訂使用者代理程式標頭
<a name="custom-user-agent-header"></a>

**標頭名稱：** `X-Amzn-User-Agent`

**目的：**區分提出 API 請求的用戶端類型，並分類互動的來源。

**格式**：`{Integrator}|{Product}`

**範例值：** `AWS|AWS Partner CRM Connector`

在每個請求中包含此標頭AWS，可讓 分析請求模式、追蹤整合，並改善不同用戶端系統的 API 體驗。

### 在 SDKs 中使用自訂標頭
<a name="using-custom-headers"></a>

若要在 SDK 呼叫中包含 `X-Amzn-User-Agent`標頭，您可以在進行 API 呼叫之前修改用戶端請求行為。以下是使用AWS SDK for Python (Boto3) 的銷售 API 範例：

```
import boto3

# Define service and endpoint details
service_name = "partnercentral-selling"
endpoint_url = "https://partnercentral-selling.us-east-1.api.aws"

# Create a boto3 client for Partner Central
partner_central_client = boto3.client(
service_name=service_name,
='us-east-1',
endpoint_url=endpoint_url
)

# Function to add the custom User-Agent header

def add_version_header(params, **kwargs):
params["headers"]['X-Amzn-User-Agent'] = 'AWS|AWS Partner CRM Connector'

# Register the event to modify the request before the call is made
partner_central_client.meta.events.register(
f'before-call.{service_name}.*', add_version_header
)

# Now, whenever an API call is made using this client, the custom User-Agent header will be included
```

此範例示範如何在 Boto3 開發套件中註冊事件，以自動將 `X-Amzn-User-Agent`標頭附加到每個 API 請求。透過修改其個別的請求攔截機制，可以將相同的方法套用至其他AWS SDKs。

**注意**  
`X-Amzn-User-Agent` 標頭格式已簡化。我們建議您使用新的格式。先前的格式 (`CompanyName|ProductName|CRMName|ProductVersion`) 仍支援回溯相容性。現有的整合將繼續運作，無需修改。