

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

# 配置自动更新
<a name="update-configuration-options"></a>

使用`appsettings.json`配置文件，以启用 Microsoft Windows 的 Amazon Kinesis 代理的自动更新以及适用于 Windows 的 Kinesis 代理的配置文件。要控制更新行为，请在配置文件中与 `Sources`、`Sinks` 和 `Pipes` 相同的级别指定 `Plugins` 键/值对。

`Plugins` 键/值对指定不在源、接收器和管道类别中时使用的其他一般功能。例如，有一个插件用于更新 Windows 的 Kinesis 代理，还有一个插件用于更新`appsettings.json`配置文件。插件表示为 JSON 对象，并始终具有 `Type` 键/值对。`Type` 确定可以为插件指定的其他键/值对。支持以下插件类型：

`PackageUpdate`  
指定 Windows 的 Kinesis 代理应定期检查程序包版本配置文件。如果程序包版本文件指示应安装不同版本的 Windows Kinesis 代理，则 Windows 的 Kinesis 代理下载该版本并安装。`PackageUpdate` 插件键/值对包括：    
`Type`  
该值必须为字符串 `PackageUpdate`，并且是必需的。  
`Interval`  
指定检查程序包版本文件中是否有任何更改的频率，以分钟为单位并表示为字符串。键/值对是可选的。如果未指定，则默认值为 60 分钟。如果值小于 1，则不进行更新检查。  
`PackageVersion`  
指定程序包版本 JSON 文件的位置。该文件可驻留在文件共享 (`file://`), 一个网站 (`http://`) 或 Amazon S3 (`s3://`)。例如，值变为`s3://mycompany/config/agent-package-version.json`指示 Windows Kinesis 代理应检查`config/agent-package-version.json`中的文件`mycompany`Amazon S3 存储桶。它应根据该文件的内容执行更新。  
的值`PackageVersion`对于 Amazon S3，键/值对对的值区分大小写。
以下是程序包版本文件内容的示例：  

```
{
    "Name": "AWSKinesisTap",
    "Version": "1.0.0.106",
    "PackageUrl": "https://s3-us-west-2.amazonaws.com/kinesis-agent-windows/downloads/AWSKinesisTap.{Version}.nupkg"
}
```
这些区域有：`Version`键/值对指定应安装的 Windows Kinesis 代理版本（如果尚未安装）。`PackageUrl` 中引用的 `{Version}` 变量解析您为 `Version` 键/值对指定的值。在本示例中，变量解析为字符串 `1.0.0.106`。提供此变量解析是为了在程序包版本文件中有一个单独的位置可以用于存储特定所需版本。您可以使用多个程序包版本文件来控制部署新版本的 Windows Kinesis 代理的节奏，以在较大规模的部署之前进行验证。要回退 Windows 的 Kinesis 代理的部署，请更改一个或多个程序包版本文件，指定已知可在您环境中使用的 Windows 的较早版本的 Kinesis 代理。  
`PackageVersion` 键/值对的值受变量替换的影响，用于帮助自动选择不同的程序包版本文件。有关变量替换的更多信息，请参阅[配置接收器变量替换](sink-object-declarations.md#configuring-kinesis-agent-windows-sink-variable-substitution)。  
`AccessKey`  
指定在对 Amazon S3 中程序包版本文件的访问进行身份验证时，要使用的访问密钥。键/值对是可选的。我们不建议使用此键/值对。有关推荐的替代身份验证过程，请参阅[配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。  
`SecretKey`  
指定在对 Amazon S3 中程序包版本文件的访问进行身份验证时，要使用的私有密钥。键/值对是可选的。我们不建议使用此键/值对。有关推荐的替代身份验证过程，请参阅[配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。  
`Region`  
指定在从 Amazon S3 访问程序包版本文件时要使用的区域终端节点。键/值对是可选的。  
`ProfileName`  
指定在对 Amazon S3 中程序包版本文件的访问进行身份验证时，要使用的安全配置文件。有关更多信息，请参阅 [配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。键/值对是可选的。  
`RoleARN`  
指定在跨账户场景下，在 Amazon S3 中程序包版本文件的访问进行身份验证时，要代入的角色。有关更多信息，请参阅 [配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。键/值对是可选的。
如果未指定 `PackageUpdate` 插件，则不检查程序包版本文件来确定是否需要更新。

`ConfigUpdate`  
指定 Windows Kinesis 代理应定期检查更新的`appsettings.json`配置文件存储在文件共享、网站或 Amazon S3 中。如果存在更新的配置文件，则下载并安装该文件的 Kinesis 代理适用于 Windows。`ConfigUpdate`键/值对包括以下内容：    
`Type`  
该值必须为字符串 `ConfigUpdate`，并且是必需的。  
`Interval`  
指定检查新配置文件的频率，以分钟为单位并表示为字符串。此键/值对可选，如果未指定，则默认为 5 分钟。如果值小于 1，则不检查配置文件更新。  
`Source`  
指定在何处查找已更新的配置文件。该文件可驻留在文件共享 (`file://`), 一个网站 (`http://`) 或 Amazon S3 (`s3://`)。例如，值变为`s3://mycompany/config/appsettings.json`指示 Windows Kinesis 代理应检查`config/appsettings.json`中的文件`mycompany`Amazon S3 存储桶。  
的值`Source`对于 Amazon S3，键/值对的值区分大小写。
`Source` 键/值对的值受变量替换的影响，可用于帮助自动选择不同的配置文件。有关变量替换的更多信息，请参阅[配置接收器变量替换](sink-object-declarations.md#configuring-kinesis-agent-windows-sink-variable-substitution)。  
`Destination`  
指定在本地计算机上存储配置文件的位置。这可以是相对路径、绝对路径或者包含环境变量引用的路径，例如 `%PROGRAMDATA%`。如果是相对路径，则它相对于 Windows 的 Kinesis 代理安装的位置。通常值应为 `.\appsettings.json`。此键/值对是必需的。  
`AccessKey`  
指定在对 Amazon S3 中配置文件的访问进行身份验证时，要使用的访问密钥。键/值对是可选的。我们不建议使用此键/值对。有关推荐的替代身份验证过程，请参阅[配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。  
`SecretKey`  
指定在对 Amazon S3 中配置文件的访问进行身份验证时，要使用的私有密钥。键/值对是可选的。我们不建议使用此键/值对。有关推荐的替代身份验证过程，请参阅[配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。  
`Region`  
指定在从 Amazon S3 访问配置文件时要使用的区域终端节点。键/值对是可选的。  
`ProfileName`  
指定在对 Amazon S3 中配置文件的访问进行身份验证时，要使用的安全配置文件。有关更多信息，请参阅 [配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。键/值对是可选的。  
`RoleARN`  
指定在跨账户场景下，在对 Amazon S3 中配置文件的访问进行身份验证时，要代入的角色。有关更多信息，请参阅 [配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。键/值对是可选的。
如果未指定 `ConfigUpdate` 插件，则不检查配置文件来确定是否需要进行配置文件更新。

下面是一个示例 `appsettings.json` 配置文件，该文件演示 `PackageUpdate` 和 `ConfigUpdate` 插件的使用。在本示例中，程序包版本文件位于`mycompany`Amazon S3 存储桶名为`config/agent-package-version.json`。大约每 2 个小时检查此文件是否有任何更新。如果在程序包版本文件中指定了不同版本的 Kinesis Agent，则从程序包版本文件中的指定位置安装指定的代理版本。

此外，还有一个`appsettings.json`配置文件存储在`mycompany`Amazon S3 存储桶名为`config/appsettings.json`。大约每 30 分钟将该文件与当前配置文件进行对比。如果发生更改，则从 Amazon S3 下载更新的配置文件并安装到`appsettings.json`配置文件。

```
{
  "Sources": [
    {
      "Id": "ApplicationLogSource",
      "SourceType": "DirectorySource",
      "Directory": "C:\\LogSource\\",
      "FileNameFilter": "*.log",
      "RecordParser": "SingleLine"
    }
  ],
  "Sinks": [
    {
       "Id": "ApplicationLogKinesisFirehoseSink",
       "SinkType": "KinesisFirehose",
       "StreamName": "ApplicationLogFirehoseDeliveryStream",
       "Region": "us-east-1"
    }  
    ],
  "Pipes": [
    {
      "Id": "ApplicationLogSourceToApplicationLogKinesisFirehoseSink",
      "SourceRef": "ApplicationLogSource",
      "SinkRef": "ApplicationLogKinesisFirehoseSink"
    }
  ],
  "Plugins": [
    {
      "Type": "PackageUpdate"
      "Interval": "120",
      "PackageVersion": "s3://mycompany/config/agent-package-version.json"
    },
    {
      "Type": "ConfigUpdate",
      "Interval": "30", 
      "Source": "s3://mycompany/config/appsettings.json",
      "Destination": ".\appSettings.json"      
    }
  ]
}
```