

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

# 构建 C2C (Cloud-to-Cloud) 连接器
<a name="concepts-building-connector"></a>

以下部分介绍了为 AWS IoT 设备管理的托管集成构建 C2C (Cloud-to-Cloud) 连接器的步骤。

**Topics**
+ [先决条件](#c2c-connector-prerequisites)
+ [所需的权限](#c2c-connector-required-permissions)
+ [C2C 连接器要求](#c2c-connector-requirements)
+ [Authorization](concepts-authorization.md)
+ [实现 C2C 连接器接口操作](connector-operations-overview.md)
+ [调用你的 C2C 连接器](allow-iot-smart-home.md)
+ [为您的 IAM 角色添加权限](adding-permissions-to-iam-role.md)
+ [手动测试您的 C2C 连接器](manually-testing-connector.md)

## 先决条件
<a name="c2c-connector-prerequisites"></a>

在创建 C2C (Cloud-to-Cloud) 连接器之前，需要满足以下条件：
+  AWS 账户 并托管您的 C2C 连接器并通过托管集成对其进行注册。有关更多信息，请参阅[创建 AWS 账户](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html)。
+ 构建连接器时，需要特定的 IAM 权限（请参阅下面的必需权限部分）。
+ 确定您的连接器将支持哪种授权类型。托管集成支持 OAuth 2.0 授权和通用授权。

  **对于 OAuth 2.0 连接器：**

  如果您的连接器支持 OAuth 2.0，则连接器的开发人员必须具备以下条件：
  + ****来自第三方云的客户端 ID，用于关联您的 C2C 连接器
  + ****来自第三方云的客户端密钥，用于与您的 C2C 连接器关联
  + **OAuth 2.0 授权网址 **
  + **OAuth 2.0 令牌网址 **

  **对于自定义授权连接器（也称为 General/Custom 授权连接器）：**

  如果您的连接器支持任何非基于 OAuth 的授权机制，我们将其称为通用授权连接器，连接器用户将需要将此授权方案的凭据保留在中。 AWS Secrets Manager这种非 OAuth 授权方案的凭据可以是令牌或 API 密钥或其他证书，这些凭证预计会被永久保留。 AWS Secrets Manager
+ Third-Party API 要求：
  + 特定于授权方案的授权材料，可以是 API Keys/tokens （适用于 OAuth）
  + 托管的 OAuth 回调 URL 的任何许可清单 AWS
**注意**  
一些第三方明确将 OAuth 重定向 URL 列入许可名单，而另一些第三方则制定了用户可以登录和注册 OAuth URL 的工作流程。咨询特定的第三方，了解将托管集成 OAuth 重定向端点列入许可名单所需的条件。

## 所需的权限
<a name="c2c-connector-required-permissions"></a>

在构建连接器时，需要特定的 IAM 权限。除了操作权`iotmanagedintegrations:`限外，您还需要以下权限：
+ [CreateAccountAssociation](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateAccountAssociation.html)、[CreateConnectorDestination](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateConnectorDestination.html)[GetAccountAssociation](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_GetAccountAssociation.html)、和[StartAccountAssociationRefresh](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_StartAccountAssociationRefresh.html)要求：
  + `secretsmanager:GetSecretValue`
+ [CreateCloudConnector](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateCloudConnector.html)要求：
  + `lambda:Invoke`

如果您的连接器支持通用授权，则您的连接器 Lambda 执行角色还必须具有：
+ `secretsmanager:GetSecretValue`
+ `kms:Decrypt`

需要这些权限才能从客户那里检索证书 AWS Secrets Manager。有关更多信息，请参阅 [适用于 Lambda 的权限 GeneralAuthorization](concepts-general-authorization-dev.md#general-auth-lambda-permissions-dev)。

有关`iotmanagedintegrations:`权限和操作的更多信息，请参阅 AWS 托管集成定义的[操作。](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotmanagedintegrations.html#awsiotmanagedintegrations-actions-as-permissions)

## C2C 连接器要求
<a name="c2c-connector-requirements"></a>

[您开发的 ](concepts-c2c-connector.md#concepts-what-is-c2c-connector) C2C 连接器可促进 AWS IoT 设备管理的托管集成与第三方供应商云之间的双向通信。连接器必须实现托管集成接口，以便 AWS IoT 设备管理代表最终用户执行操作。

这些接口提供以下功能：
+ 探索最终用户设备
+ 启动从 AWS IoT 设备管理的托管集成发送的设备命令
+ 识别用户

为了支持设备操作，连接器必须管理 AWS IoT 设备管理的托管集成与相关的第三方平台之间请求和响应消息的转换。

以下是 C2C 连接器的要求：

1. **OAuth 2.0 合规性（如果适用）**

   如果您的连接器支持 OAuth 2.0，则第三方授权服务器必须符合 OAuth 2.0 标准以及中列出的配置。[OAuth 配置要求](concepts-account-linking.md#oauth-config-requirements)

1. **案件数据模型合规性 **

   C2C 连接器需要解释案件数据模型 AWS 实现中的标识符，并且必须发出符合案件数据模型 AWS 实现的响应和事件。有关更多信息，请参阅 [AWS 物质数据模型的实现](matter-data-model.md)。

1. **SigV4 身份验证 **

   C2C 连接器必须能够通过身份验证调用 AWS IoT 设备管理 API 的托管集成。`SigV4`对于 SendConnectorEvent 通过 API 发送的异步事件，必须使用注册连接器时使用的相同 AWS 账户 凭据来签署相关 SendConnectorEvent 请求。

1. **必需的操作 **

   连接器必须实现以下四项操作：
   + `AWS.ActivateUser`-检索用户标识符并激活用户
   + `AWS.DiscoverDevices`-发现最终用户设备
   + `AWS.SendCommand`-向设备发送命令
   + `AWS.DeactivateUser`-停用用户并撤消访问权限

1. **事件转发 **

   当您的 C2C 连接器收到与设备命令响应或设备发现相关的第三方事件时，它必须将这些事件转发给 API 的托管集成。`SendConnectorEvent`有关这些事件和 `SendConnectorEvent` API 的更多信息，请参阅[SendConnectorEvent](https://amazonaws.com/iot-mi/latest/APIReference/API_SendConnectorEvent.html)。

**注意**  
该 `SendConnectorEvent` API 是托管集成 SDK 的一部分，用于代替手动生成和签署请求。