

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

# 令牌交换服务
<a name="token-exchange-service-component"></a>

令牌交换服务组件 (`aws.greengrass.TokenExchangeService`) 提供了可用于与自定义组件中的 Amazon 服务进行交互的 Amazon 凭证。

令牌交换服务作为本地服务器运行。此本地服务器使用您在 [Greengras](greengrass-nucleus-component.md) s 核心核心组件中配置的 Amazon IoT 角色别名连接到 Amazon IoT 凭证提供程序。该组件提供了两个环境变量，`AWS_CONTAINER_CREDENTIALS_FULL_URI` 和 `AWS_CONTAINER_AUTHORIZATION_TOKEN`。`AWS_CONTAINER_CREDENTIALS_FULL_URI` 定义此本地服务器的 URI。当组件创建 S Amazon DK 客户端时，该客户端会识别此 URI 环境变量，并使用中的令牌`AWS_CONTAINER_AUTHORIZATION_TOKEN`连接到令牌交换服务并检索 Amazon 凭证。这允许 Greengrass 核心设备调用 Amazon 服务操作。有关自定义组件中此组件用法的更多信息，请参阅 [与 Amazon 服务交互](interact-with-aws-services.md)。

**重要**  <a name="token-exchange-service-aws-sdk-requirement"></a>
2016 年 7 月 13 日新增了 Amazon SDKs 对以这种方式获取 Amazon 证书的支持。您的组件必须使用在该日期或之后创建的 Amazon SDK 版本。有关更多信息，请参阅《*亚马逊弹性容器服务开发者指南》中的[使用支持的 Amazon 软件](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/task-iam-roles.html#task-iam-roles-minimum-sdk)开发*工具包。

**注意**  
使用 Amazon 默认凭证链的组件可能会发现和使用其他凭证来源（如果存在）。在亚马逊弹性容器服务 (Amazon ECS) 中，亚马逊弹性容器服务 (Amazon ECS) 容器`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`凭证将`AWS_CONTAINER_CREDENTIALS_FULL_URI`优先于亚马逊弹性容器服务 (Amazon ECS)，这意味着令牌交换服务凭证可能无法在亚马逊弹性容器服务 (Amazon ECS) 中使用。有关更多信息，请参阅[标准化凭证](https://docs.amazonaws.cn/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)
+ [配置](#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 Nucleus](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>

此组件没有任何依赖关系。

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

此组件提供您可以在部署组件时自定义的以下配置参数。

`port`  
用于令牌交换服务连接的端口。端口配置变更后，令牌交换服务会重新启动。

`credentialRetryInSec`  
指定令牌交换服务遇到凭证请求错误时的重试间隔（以秒为单位）。    
`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 Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

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

```
/greengrass/v2/logs/greengrass.log
```

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

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

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 Amazon 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  |  初始版本。  | 