

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

# 字符交換服務
<a name="token-exchange-service-component"></a>

字符交換服務元件 (`aws.greengrass.TokenExchangeService`) 提供 AWS 登入資料，可用來與自訂元件中的 AWS 服務互動。

字符交換服務會以本機伺服器的形式執行。此本機伺服器會使用您在 [Greengrass 核心核元件](greengrass-nucleus-component.md)中設定 AWS IoT 的角色別名，連線至 AWS IoT 登入資料提供者。元件提供兩個環境變數，`AWS_CONTAINER_CREDENTIALS_FULL_URI`以及 `AWS_CONTAINER_AUTHORIZATION_TOKEN`。 會`AWS_CONTAINER_CREDENTIALS_FULL_URI`定義此本機伺服器的 URI。當元件建立 AWS SDK 用戶端時，用戶端會辨識此 URI 環境變數，並使用 中的字符`AWS_CONTAINER_AUTHORIZATION_TOKEN`來連線至字符交換服務並擷取 AWS 憑證。這可讓 Greengrass 核心裝置呼叫 AWS 服務操作。如需如何在自訂元件中使用此元件的詳細資訊，請參閱[與 AWS 服務互動](interact-with-aws-services.md)。

**重要**  <a name="token-exchange-service-aws-sdk-requirement"></a>
以這種方式取得 AWS 登入資料的支援已於 2016 年 7 月 13 日新增至 AWS SDKs。您的元件必須使用在該日期或之後建立的 AWS SDK 版本。如需詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[使用支援的 AWS SDK](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#task-iam-roles-minimum-sdk)。

**注意**  
使用 AWS 預設登入資料鏈結的元件如果存在，可能會探索並使用其他登入資料來源。在 Amazon Elastic Container Service (Amazon ECS) 容器憑證中`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`，將優先於 `AWS_CONTAINER_CREDENTIALS_FULL_URI`，這表示字符交換服務憑證可能無法在 Amazon Elastic Container Service (Amazon ECS) 中運作。如需詳細資訊，請參閱[標準化憑證提供者](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) 

**Topics**
+ [版本](#token-exchange-service-component-versions)
+ [Type](#token-exchange-service-component-type)
+ [作業系統](#token-exchange-service-component-os-support)
+ [相依性](#token-exchange-service-component-dependencies)
+ [Configuration](#token-exchange-service-component-configuration)
+ [本機日誌檔案](#token-exchange-service-component-log-file)
+ [變更記錄](#token-exchange-service-component-changelog)

## 版本
<a name="token-exchange-service-component-versions"></a>

此元件具有下列版本：
+ 2.0.x

## Type
<a name="token-exchange-service-component-type"></a>

<a name="public-component-type-generic"></a>此<a name="public-component-type-generic-phrase"></a>元件是一般元件 (`aws.greengrass.generic`)。[Greengrass 核](greengrass-nucleus-component.md)會執行元件的生命週期指令碼。

<a name="public-component-type-more-information"></a>如需詳細資訊，請參閱[元件類型](develop-greengrass-components.md#component-types)。

## 作業系統
<a name="token-exchange-service-component-os-support"></a>

此元件可以安裝在執行下列作業系統的核心裝置上：
+ Linux
+ Windows

## 相依性
<a name="token-exchange-service-component-dependencies"></a>

此元件沒有任何相依性。

## Configuration
<a name="token-exchange-service-component-configuration"></a>

此元件提供下列組態參數，您可以在部署元件時自訂這些參數。

`port`  
用於字符交換服務連線的連接埠。字符交換服務會在連接埠組態變更後重新啟動。

`credentialRetryInSec`  
當 Token Exchange Service 遇到登入資料請求錯誤時，以秒為單位指定重試間隔。    
`clientError`  
用戶端錯誤 (4xx HTTP 狀態碼） 的重試間隔，以秒為單位。  
預設：`120`  
有效值：`10` 至 `42900`  
`serverError`  
伺服器錯誤的重試間隔，以秒為單位 (5xx HTTP 狀態碼）。  
預設：`60`  
有效值：`10` 至 `42900`  
`unknownError`  
未知錯誤 （連線錯誤和 4xx 和 5xx 範圍以外的 HTTP 狀態碼） 的重試間隔，以秒為單位。  
預設：`300`  
有效值：`10` 至 `42900`

**Example 範例：組態合併更新**  

```
{
   "port": 2020,
   "credentialRetryInSec": {
    "clientError": 30,
    "serverError": 45,
    "unknownError": 60
   }
}
```

## 本機日誌檔案
<a name="token-exchange-service-component-log-file"></a>

此元件使用與 [Greengrass 核](greengrass-nucleus-component.md)元件相同的日誌檔案。

------
#### [ Linux ]

```
{{/greengrass/v2}}/logs/greengrass.log
```

------
#### [ Windows ]

```
{{C:\greengrass\v2}}\logs\greengrass.log
```

------

**檢視此元件的日誌**
+ 在核心裝置上執行下列命令，以即時檢視此元件的日誌檔案。將 `{{/greengrass/v2}}`或 {{C：\\greengrass\\v2}} 取代為 AWS IoT Greengrass 根資料夾的路徑。

------
#### [ Linux ]

  ```
  sudo tail -f {{/greengrass/v2}}/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content {{C:\greengrass\v2}}\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 變更記錄
<a name="token-exchange-service-component-changelog"></a>

下表說明每個版本元件的變更。


|  **版本**  |  **變更**  | 
| --- | --- | 
| 2.0.3 | 初始版本。 | 