

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为 AWS 合作伙伴中心和 AWS Marketplace 活动设置实时通知
<a name="set-up-real-time-notifications"></a>

以下主题说明了如何为 Cent AWS Partner ral 和 AWS Marketplace 事件设置实时 EventBridge通知。您可以通过配置连接的应用程序在 Salesforce 中设置通知，也可以使用 AWS CloudFormation 模板。

**Topics**
+ [配置与 Salesforce 连接的应用程序](#configuring-salesforce-connected-app)
+ [使用 AWS CloudFormation 堆栈设置通知](#configuring-aws-components)

## 配置与 Salesforce 连接的应用程序
<a name="configuring-salesforce-connected-app"></a>

以下步骤说明了如何在 Salesforce 中配置连接的应用程序。要对目标连接使用 OAuth 身份验证，必须创建已连接的应用程序。有关更多信息，请参阅本[手动创建通知组件](#manual-creation-of-aws-components)指南后面的部分。

1. 以系统管理员身份登录您的 Salesforce 组织。

1. 在 **“设置”** 的 “**快速查找**” 框中输入**apps**，然后选择 “**应用程序管理器**”。

1. 在 **Lightning Experience 应用程序管理器****页面上，选择新**建**互联应用程序，选择创建互联应用程序**，然后选择**继续**。

   此时将出现 “**新建连接的应用程序**” 页面。

1. 执行以下操作：

   1. 在 “**已连接的应用程序名称**” 框中，输入应用程序的名称。

   1. 在 “**联系人邮**箱” 框中，输入您的电子邮件地址。

   1. （可选）按照 Salesforce 文档中[配置基本互联应用程序设置](https://help.salesforce.com/s/articleView?id=sf.connected_app_create_basics.htm)中所述填写其余字段。

1. 选中 “**启用 OAuth 设置”** 复选框，然后执行以下操作：

   1. 选中 “**启用设备流**” 复选框。您可以忽略生成的回传 URL。

   1. 在 “**可用 OAuth 范围**” 下，选择 “**通过管理用户数据**”， APIs然后使用 “**添加**” 按钮将范围移至所选范围列表中。

   1. 选中以下复选框：
      + **支持的授权流程需要验证密钥才能使用代码交换 (PKCE) 扩展**
      + **Web 服务器流程需要密钥**
      + **刷新令牌流需要密钥**
      + **启用客户端凭证流程**

   1. 在选择 “**启用客户端凭证流**” 后出现的消息中，选择 “**确定”**。

   1. 滚动到页面底部并选择 **Save (保存)**。

1. 选择 “**继续**”，然后选择 “**管理消费者详细信息**”。

   将出现 “**验证您的身份**” 页面，系统会向您的联系人电子邮件地址发送验证码。

1.  在验证码框中输入**验证码**，然后选择**验证**。

   此时将显示您已连接的应用程序的页面。

1. 在 “**消费者详细信息**” 下，选择消费者密钥和客户密钥的 “**复制**” 按钮。

1. 在 “**设置**” 的 “**快速查找**” 框中，输入 “**应用程序**”，选择 “**管理已连接的应用程序**”，然后选择您刚刚创建的关联应用程序。

1. 选择 **“编辑策略”**，然后执行以下操作：

   1. 从 “**允许的用户**” 列表中，选择 “**所有用户均可自行授权**”。

   1. 从 “**IP 放松**” 列表中，选择 “**强制执行 IP 限制**”。

   1. 从**运行身份**列表中，选择*执行用户*，即您向其分配客户端凭据流的用户。Salesforce 要求执行用户代表该用户返回访问令牌。

   1. 选择**保存**。

## 使用 AWS CloudFormation 堆栈设置通知
<a name="configuring-aws-components"></a>

以下主题介绍如何使用 AWS CloudFormation 模板来设置实时 EventBridge 通知。这些步骤仅适用于 AWS Partner CRM 连接器的 3.0 及更高版本。

对于 AWS Partner CRM 连接器版本 3.0 及更高版本，您可以使用 CloudFormation 模板为 Amazon EventBridge 集成配置组 AWS 件，也可以手动创建组件。要使用 CloudFormation，请从以下地址下载模板：

**Topics**
+ [查找您的域名网址](#find-domain-url)
+ [使用堆 CloudFormation 栈](#downloading-templates)
+ [手动创建通知组件](#manual-creation-of-aws-components)
+ [示例规则](#example-rules)

### 查找您的域名网址
<a name="find-domain-url"></a>

该 CloudFormation 模板使用您的域名网址作为其必需参数之一。

**要查找网址**

1. 登录 Salesforce。

1. 在 “**设置**” 部分的 “**快速查找**” 框中输入**my domain**。

1. 在左侧窗格的 “**公司设置”** 下，选择 “**我的域名**” 链接。

1. 复制 “**当前我的域名 URL**” 框中的地址。

**注意**  
在 CloudFormation 模板中输入 URL 时，必须使用 https://前缀。

### 使用堆 CloudFormation 栈
<a name="downloading-templates"></a>

以下主题中的步骤说明了如何创建和部署用于设置实时通知的 CloudFormation 堆栈。

1. 下载以下模板：
**注意**  
您可以分别部署每个模板，并且对两个模板执行相同的步骤。
   + 合作伙伴中心 API 集成：[https://servicecatalogconnector.s3.amazonaws.com/APIDestinationcft\$1pc](https://servicecatalogconnector.s3.amazonaws.com/APIDestinationCFT_PCAPI.json) api.json
   + （可选） AWS Marketplace 集成：[https://servicecatalogconnector.s3.amazonaws.com/APIDestinationcft AWSMP](https://servicecatalogconnector.s3.amazonaws.com/APIDestinationCFT_AWSMP.json) \$1 .json

1. 在 AWS 控制台中，登录您的 AWS Marketplace 卖家账户并确保该账户在**弗吉尼亚州北**部运行。 EventBridge 仅在该地区运营。

1. 仍在控制台中，继续搜索**cloudformation**，然后打开 CloudFormation 控制台。

1. 在**堆栈**页面上，选择**创建堆栈**。

1. 选择 “**选择现有模板**并**上传模板文件**” 单选按钮。

1. 选择 “**选择文件**” 以打开下载的模板，然后选择 “**下一步**”。

1. 在**指定堆栈详细信息**页面上，输入以下内容：
   + **堆栈名称**-输入堆栈的名称。
   + **客户端 ID** — 输入您在创建关联应用程序时记下的使用者密钥。
   + **客户端密钥**-输入您在创建连接的应用程序时记下的用户密钥。
   + **域名网址**-使用以下格式：**https://*domain\$1URL*.**

   在完成后，选择**下一步**。

1. 在**配置堆栈选项**页面上，滚动到末尾，选中 “**我确认 AWS CloudFormation 可能会创建 IAM 资源**” 复选框，然后选择**下一步**。

1. 选择**提交**。

成功部署后，模板将创建 API 目标、连接、事件规则和死信队列。

### 手动创建通知组件
<a name="manual-creation-of-aws-components"></a>

以下步骤说明了如何手动创建 EventBridge 通知组件。

**Topics**
+ [创建 Amazon EventBridge API 目标和连接](#manual-destination-connection)
+ [创建 EventBridge 规则并将其连接到 API 目标](#create-connect-ev-rule)
+ [创建变更集事件](#change-set-events)
+ [创建优惠已发布活动](#offer-released-events)
+ [创建机会事件](#opportunity-events)
+ [事件的类型](#types-of-events)
+ [事件示例](#example-event)

#### 创建 Amazon EventBridge API 目标和连接
<a name="manual-destination-connection"></a>

要在中创建 API 目标和连接 EventBridge，请创建一个使用新连接的 API 目标。在本例中，API 的目标是 REST API 调用 Salesforce 以发布回事件。该连接包含 API 调用的身份验证信息。该连接接受多种授权方法。

**先决条件**  
要对 API 目标连接使用 OAuth 授权，请在 Salesforce 中创建一个已连接的应用程序。为此，请按照 Salesforce 文档中[为 OAuth 2.0 客户端凭证流程配置互联应用程序](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm)中的步骤进行操作。您可以使用连接的应用程序中的使用者密钥和密钥进行 API 目标连接。

要在 EventBridge 控制台中创建 API 目标，请执行以下操作：
+ 按照《*亚马逊 EventBridge 用户指南》*[中创建 API 目标](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-api-destinations.html#eb-api-destination-create)中的步骤进行操作。
+ 设置特定于 Salesforce 的配置。

在 Salesforce 中，在 “**我的域名**” 页面的 “**设置**” 下，记下您的组织的域名。您可以使用它在 EventBridge 控制台中设置 API 目标和连接。以下步骤说明了操作方法。

**创建目的地和连接**

1. 打开 EventBridge 控制台 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)，然后在左侧导航窗格中选择 **API 目的地**。

1. 向下滚动到 **API 目标**表，然后选择**创建 API 目标**。

   此时将**出现 “创建 API 目标**” 页面。

1. 输入以下信息：

   1. API 目标的**名称**。您最多可以使用 64 个大写或小写字母、数字、点 (.)、破折号 (-) 或下划线 (\$1) 字符。

      在当前区域中，该名称对于您的账户必须是唯一的。

   1. （可选）输入 API 目标的**描述**。

   1. 对于 **API 目标端点**，请使用此网址：**https://*my-salesforce-domain-name*.my.salesforce.com/services/data/v58.0/sobjects/*event-api-name***。

   1. 对于 **HTTP 方法**，选择 **POST**。

1. 在 “**连接配置**” 下，选择 “**创建新连接**”，然后执行以下操作：

   1. 输入名称和可选描述。

   1. 对于**目的地类型**，请选择**其他**。

   1. 选择 “**OAuth 客户凭证**”。

   1. 对于**授权端点**，请接受预填充的端点。

      -或-

      如果您使用的是生产组织，请将填充的终端节点替换为以下 URL：

      **https://*my-salesforce-domain-name*.my.salesforce.com/services/oauth2/token**

   1. 对于 **HTTP 方法**，选择 **POST**。

   1. 在 “**客户端 ID**” 中，输入 Salesforce 中连接的应用程序中的使用者密钥。

   1. 对于**客户机密钥**，请在 Salesforce 中输入来自已连接应用程序的用户密钥。

   1. 添加以下 OAuth 值：
      + **参数**：正文场
      + **密钥**：grant\$1type
      + **值**：客户凭证

1. 选择**创建**。

**注意**  
如果您的 Salesforce 组织使用多因素身份验证进行 API 访问，则用户必须完成第二个身份验证挑战才能访问 Salesforce。 APIs有关更多信息，请参阅 Salesforce [文档中的为 API 访问设置多重身份验证登录要求](https://help.salesforce.com/s/articleView?id=sf.security_require_2fa_api.htm&language=en_US&type=5)。

创建 API 目标后，您可以创建使用该目标作为目的地的规则。

#### 创建 EventBridge 规则并将其连接到 API 目标
<a name="create-connect-ev-rule"></a>

EventBridge 规则将事件从事件总线路由到 API 目的地，这会导致发出 REST 调用将事件发布回 Salesforce。

有关 EventBridge 规则的更多信息，请参阅《[亚马逊* EventBridge 用户指南》中的创建对事件做出反应的 Amazon EventBridge * 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)。

#### 创建变更集事件
<a name="change-set-events"></a>

以下步骤说明了如何创建更改集事件。

1.  在 [Amazon](https://docs.aws.amazon.com/marketplace/latest/userguide/seller-eventbridge.html#events-changesets) 中 EventBridge，选择**规则**。

1.  从列表中选择所需的事件总线。

1.  在**规则**部分中，选择**创建规则**。

1.  输入规则的名称，然后选择**下一步**。

1. 在**事件模式**下，选择**自定义模式（JSON 编辑器）**，然后输入以下过滤器。 您可以使用细节类型的任意组合。

   ```
   {
     "source": [
       "aws.marketplacecatalog"
     ],
     "detail-type": [
       "Change Set Succeeded",
       "Change Set Failed",
       "Change Set Cancelled"
     ]
   }
   ```

    有关事件模式匹配的更多信息，请参阅 AWS 文档[中的 Amazon EventBridge 事件模式中的内容筛选](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns-content-based-filtering.html)。

1.  选择**下一步**。

1.  在**选择目标**中，在**目标 1** 下，选择 **EventBridge API 目标**。

1.  从列表中选择您刚刚创建的 API 目标。

1.  展开**其他设置**。

1.  在 “**配置目标输入**” 下，选择 “**输入变压器**” 和 “**配置输入变压器**”。这样可以确保仅发送原始事件详细信息部分中的 Salesforce 事件字段。

    输入路径必须是：  

   ```
   {
     "Name": "$.detail-type",
     "awsapn__Account_Number__c": "$.account",
     "awsapn__EntityId__c": "$.detail.ChangeSetId"
   }
   ```

    模板必须是：  

   ```
   {
     "Name": Name,
     "awsapn__Account_Number__c": awsapn__Account_Number__c,
     "awsapn__EntityId__c": awsapn__EntityId__c
   }
   ```

1.  选择 “**下一步**”，然后选择 “**下一步**”。

1. 查看规则，然后选择**创建规则**。

**注意**  
要对 API 目标进行故障排除，您可以使用 Amazon SQS 控制台向目标添加死信队列。队列收到无法传送的消息以及错误。在 Amazon SQS 控制台中，您可以轮询队列中的消息是否有错误。*有关更多信息，请参阅 Amazon S [QS 用户指南中的 EventBridge使用死信队列处理未送达的事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rule-dlq.html)[以及在 Amazon SQS 中接收和删除消息](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-receive-delete-message.html)。*

#### 创建优惠已发布活动
<a name="offer-released-events"></a>

以下步骤说明了如何创建报价已发布事件。

1.  在 [Amazon EventBridge](https://docs.aws.amazon.com/marketplace/latest/userguide/seller-eventbridge.html#events-changesets) 控制台中，选择 “**规则**”。

1.  从列表中选择所需的事件总线。

1.  在**规则**部分中，选择**创建规则**。

1.  输入规则的名称，然后选择**下一步**。

1.  在**事件模式**下，选择**自定义模式（JSON 编辑器）**，然后输入以下过滤器：  

   ```
   {
     "source": [
       "aws.marketplacecatalog"
     ],
     "detail-type": [
       "Offer Released"
     ]
   }
   ```

    有关事件模式匹配的更多信息，请参阅亚马逊 EventBridge 用户指南[中的亚马逊 EventBridge 事件模式中的内容筛选](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns-content-based-filtering.html)。

1.  选择**下一步**。

1.  在**选择目标**中，在**目标 1** 下，选择 **EventBridge API 目标**，然后打开列表并选择您刚刚创建的 API 目标。

1.  展开**其他设置**。

1.  在 “**配置目标输入**” 下，选择 “**输入变压器**”，然后选择 “**配置输入变压器**”。此步骤可防止将顶级亚马逊事件字段发送到 Salesforce。仅发送包含原始事件详细信息部分的 Salesforce 事件字段的部分。

    使用以下输入路径：  

   ```
   {
      "Name":"$.detail-type",
      "awsapn__Account_Number__c":"$.account",
      "awsapn__EntityId__c":"$.detail.offer.id",
      "awsapn__Manufacturer_Account_Id__c":"$.detail.manufacturer.accountId",
      "awsapn__Product_Id__c":"$.detail.product.id",
      "awsapn__Seller_Account_Id__c":"$.detail.sellerOfRecord.accountId"
   }
   ```

    使用以下模板：  

   ```
   {
     "Name": Name,
     "awsapn__Account_Number__c": awsapn__Account_Number__c,
     "awsapn__EntityId__c": awsapn__EntityId__c,
     "awsapn__Seller_Account_Id__c": awsapn__Seller_Account_Id__c,
     "awsapn__Manufacturer_Account_Id__c": awsapn__Manufacturer_Account_Id__c,
     "awsapn__Product_Id__c": awsapn__Product_Id__c
   }
   ```

1.  选择 “**下一步**”，然后选择 “**下一步**”。

1.  查看规则，然后选择**创建规则**。

**注意**  
 为了帮助排除 API 目标的执行故障，请向目标添加一个 Amazon SQS 死信队列。队列会收到无法传送的消息以及错误。然后，您可以轮询消息以查看错误。有关更多信息，请参阅文档中的[事件重试策略和使用死信队列](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rule-dlq.html)以及[接收和删除消息（控制台）](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-receive-delete-message.html)。 AWS 

#### 创建机会事件
<a name="opportunity-events"></a>

 机会事件提供有关机会状态或细节变化的实时通知 

 您还可以使用以编程方式创建和管理 EventBridge 规则。[AWS SDKs](https://docs.aws.amazon.com/partner-central/latest/selling-api/opportunity-events.html#aws-eventbridge)

#### 事件的类型
<a name="types-of-events"></a>

以下列表描述了合作伙伴处理机会时生成的事件类型。这些链接会将您带到每个事件的 API 文档。
+ [机会已创建：](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#opportunity-created)— 在创建新机会时触发。
+ [机会已更新](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#opportunity-updated)-机会更新时触发。
+ [已创建参与邀请](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#invitation-created)-在创建机会时触发。
+  [参与邀请已接受](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#invitation-accepted) — 当合作伙伴接受 AWS 参与邀请，确认他们有兴趣 AWS 就该机会与之合作时触发。
+  [参与邀请被拒绝](https://docs.aws.amazon.com/partner-central/latest/selling-api/selling-api-events.html#invitation-rejected)-机会被拒绝时触发。

#### 事件示例
<a name="example-event"></a>

```
{
    "version": "1",
    "id": ""d1example-0c9c-4655-15bf-c5exampleb08",
    "source": "aws.partnercentral-selling",
    "detail-type": "Opportunity Created",
    "time": ""2023-10-28T13:31:05Z",
    "region": ""us-east-1",
    "account": ""123456789123",
    "detail": { 
        "schemaVersion": "1",
        "catalog": "AWS",
        "opportunity": {
            "identifier": ""O1234567",
            "url": "Partner Central Opportunity Page URL"
        }
    }
}
```

### 示例规则
<a name="example-rules"></a>

下表列出了可用于上一节所列事件的 EventBridge 规则示例。规则将事件从事件总线路由到 API 目的地，这会导致发出 REST 调用将事件发布回 Salesforce。


| 事件类型 | 示例 | 
| --- | --- | 
| **机会已创建** |  <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Opportunity Created"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre>  | 
| **机会已更新** |  <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Opportunity Updated"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre> | 
| **订婚邀请已创建** |  <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Engagement Invitation Created"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre>  | 
| **订婚邀请已接受** |  <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Engagement Invitation Accepted"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre>  | 
| **订婚邀请被拒绝** | <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail-type": ["Engagement Invitation Rejected"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre> | 
| **所有活动** | <pre>{<br />  "source": ["aws.partnercentral-selling"],<br />  "detail": {<br />    "catalog": ["AWS"]<br />  }<br />}</pre> | 