

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

# 使用和建立元件類型
<a name="twinmaker-component-types"></a>

本主題將逐步引導您瞭解用來建立 AWS IoT TwinMaker 元件類型的值和結構。它會示範如何建立要求物件，您可以傳遞至 [CreateComponentType](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_CreateComponentType.html)API 或使用 AWS IoT TwinMaker 主控台中的元件類型編輯器。

組件為其關聯實體提供屬性和數據的上下文。

## 內建元件類型
<a name="twinmaker-component-types-built-in"></a>

在 AWS IoT TwinMaker 主控台中，當您選擇工作區，然後在左窗格中選擇 [**元件類型**] 時，您會看到下列元件類型。
+ 自動同步 AWS IoT SiteWise 資產和資產**模型，並將其轉換為實體元件和元件類型的元件類型的元件類型。** AWS IoT TwinMaker 如需有關使用 AWS IoT SiteWise 資產同步的詳細資訊，請參閱[與資產同步 AWS IoT SiteWise](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/tm-sw-asset-sync.html)。
+ 基本：一**個基本的警報組件，可將警報數據從外部源提取到實體。**此組件不包含連接到特定數據源的函數。這意味著警報組件是抽象的，並且可以由另一個組件類型繼承，該組件類型指定了數據源和從該源讀取的函數。
+ 文件：**包含實體相關資訊之文件的**標題至 URL 的簡單對應。
+ **連接器. 邊緣視訊：使用適用於運動視訊串流的邊緣連接器，從 IoT 裝置提取視訊至實體的元件。** AWS IoT Greengrass [Kinesis Video Streams AWS IoT Greengrass 元件的邊緣連接器](https://docs.aws.amazon.com/greengrass/v2/developerguide/kvs-edge-connector-component.html)不是 AWS IoT TwinMaker 元件，而是部署在 IoT 裝置本機上的預先建置 AWS IoT Greengrass 元件。
+ **連接器：將數據提取到實體中的組件。** AWS IoT SiteWise 
+ **參數：將靜態鍵值對添加到實體的組件。**
+ **視頻：從 Kinesis Video Streams 提取視頻到一個實體的組件。** AWS IoT TwinMaker 

![[元件類型主控台] 頁面包含數個預先定義的元件類型清單。](http://docs.aws.amazon.com/zh_tw/iot-twinmaker/latest/guide/images/ComponentTypesPredefined.png)


## AWS IoT TwinMaker 元件類型的核心功能
<a name="twinmaker-component-types-core"></a>

下列清單說明元件類型的核心功能。
+ **屬性定義**：[PropertyDefinitionRequest](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_PropertyDefinitionRequest.html)物件定義了一個屬性，您可以在場景撰寫器中填入該屬性，也可以使用從外部資料來源提取的資料填入該屬性。您設定的靜態屬性會儲存在中 AWS IoT TwinMaker。從資料來源提取的時間序列屬性和其他屬性會儲存在外部。

  您可以在對`PropertyDefinitionRequest`映的字串內指定性質定義。每個字串對於地圖必須是唯一的。
+ **函**數：[FunctionRequest](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_FunctionRequest.html)物件指定 Lambda 函數，該函數可從外部資料來源讀取和寫入外部資料來源。

  包含具有儲存在外部但沒有對應函數來擷取值的屬性之屬性的組件型別是抽象組件型別。您可以從抽象組件類型擴展具體組件類型。您無法將抽象組件類型添加到實體。它們不會出現在場景作曲家中。

  您可以在要對`FunctionRequest`映的字串內指定函數。字串必須指定下列其中一種預先定義的函數類型。
  + `dataReader`：從外部源提取數據的函數。
  + `dataReaderByEntity`：從外部源提取數據的函數。

    當您使用這種類型的資料讀取器時，[GetPropertyValueHistory](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_GetPropertyValueHistory.html)API 作業僅支援此元件類型中屬性的實體特定查詢。（您只能請求 `componentName` \+ 的屬性值歷史記錄`entityId`。）
  + `dataReaderByComponentType`：從外部源提取數據的函數。

    當您使用這種類型的資料讀取器時，[GetPropertyValueHistory](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_GetPropertyValueHistory.html)API 作業僅支援此元件類型中屬性的跨實體查詢。(您只能要求的屬性值歷史記錄`componentTypeId`。)
  + `dataWriter`：將資料寫入外部來源的函數。
  + `schemaInitializer`：每當您建立包含元件類型的實體時，會自動初始化屬性值的函數。

  在非抽象組件類型中，需要三種類型的數據讀取器函數之一。

  如需實作時間串流遙測元件 (包括警示) 的 Lambda 函數範例，請參閱[AWS IoT TwinMaker 範](https://github.com/aws-samples/aws-iot-twinmaker-samples/blob/main/src/modules/timestream_telemetry/lambda_function/udq_data_reader.py)例中的資料讀取器。
**注意**  
由於警示連接器繼承自抽象警示元件類型，因此 Lambda 函數必須傳回`alarm_key`值。如果您沒有傳回此值，Grafana 將無法將其識別為鬧鐘。這是所有返回警報的組件都必需的。
+ **繼承**：組件類型通過繼承促進代碼可重用性。一個元件類型最多可以繼承 10 個父元件類型。

  使用`extendsFrom`參數可指定元件類型從中繼承性質和函數的元件類型。
+  **ISSingleton**：某些元件包含的屬性，例如位置座標，這些屬性不能包含在實體中多次。將`isSingleton`參數值設定為，`true`以指示元件類型只能包含在圖元中一次。

## 建立屬性定義
<a name="twinmaker-component-types-property-def"></a>

下表說明 a 的參數`PropertyDefinitionRequest`。


| 參數 | 描述 | 
| --- | --- | 
| `isExternalId` | 布林值；指定屬性是否為儲存在外部之屬性值的唯一識別碼 (例如 AWS IoT SiteWise 資產 ID)。<br />此屬性的預設值為 `false`。 | 
| `isStoredExternally` | 布林值；指定屬性值是否儲存在外部。<br />此屬性的預設值為 `false`。 | 
| `isTimeSeries` | 布林值；指定屬性是否儲存時間序列資料。<br />此屬性的預設值為 `false` | 
| `isRequiredInEntity` | 布林值；指定屬性在使用元件類型的實體中是否必須具有值。 | 
| `dataType` | 指定屬性之資料類型 (例如字串、[DataType](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_DataType.html)對映、清單和測量單位) 的物件。 | 
| `defaultValue` | 指[DataValue](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_DataValue.html)定屬性預設值的物件。 | 
| `configuration` | 一種 string-to-string 地圖，指定您需要連接到外部資料來源的其他資訊。 | 

## 建立函數
<a name="twinmaker-component-types-function"></a>

下表說明 a 的參數`FunctionRequest`。


| 參數 | 描述 | 
| --- | --- | 
| ` implementedBy` | 指[DataConnector](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_DataConnector.html)定連線至外部資料來源之 Lambda 函數的物件。 | 
| `requiredProperties` | 函數為了讀取和寫入外部資料來源所需的屬性清單。 | 
| `scope` | 函數的範圍。用`Workspace`於範圍涵蓋整個工作區的函數。用`Entity`於範圍限制為包含元件之實體的函數。 | 

如需展示如何建立和延伸元件類型的範例，請參閱[範例元件類型](twinmaker-component-types-examples.md)。