

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

# 适用于 Microsoft Windows 的 Amazon Kinesis 代理入门
<a name="getting-started"></a>

您可以使用适用于微软 Windows 的 Amazon Kinesis 代理程序（适用于 Windows 的 Kinesis 代理）从 Windows 队列收集、分析、转换和流式传输日志、事件和指标到各种 AWS 服务。以下信息包含用于 Windows 的 Kinesis 代理程序的先决条件和分步说明。

**Topics**
+ [

## Prerequisites
](#getting-started-prerequisites)
+ [

## 设置 AWS 账户
](#getting-started-setting-up)
+ [

## 安装适用于 Windows 的 Kinesis 代理
](#getting-started-installation)
+ [

## 配置和启动适用于 Windows 的 Kinesis 代理
](#getting-started-start-service)

## Prerequisites
<a name="getting-started-prerequisites"></a>

在安装 Windows Kinesis 代理之前，请确保您具备以下先决条件：
+ 熟悉 Windows 的 Kinesis 代理概念。有关更多信息，请参阅 [面向微软 Windows 概念的 Amazon Kinesis 代理](kinesis-agent-windows-concepts.md)。
+ AWS 账户，用于使用与数据管道相关的各种 AWS 服务。有关创建和配置 AWS 账户的更多信息，请参阅[设置 AWS 账户](#getting-started-setting-up)。
+ Microsoft .NET Framework 4.6 或更高版本，安装在每个将运行 Windows 代理程序的台式机或服务器上。有关更多信息，请参阅 Microsoft .NET 文档中的[安装面向开发人员的 .NET Framework](https://docs.microsoft.com/en-us/dotnet/framework/install/guide-for-developers)。

  要确定台式机或服务器上安装的 .NET Framework 的最新版本，请使用以下 PowerShell 脚本：

  ```
       [System.Version](
       (Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse `
       | Get-ItemProperty -Name Version -ErrorAction SilentlyContinue `
       | Where-Object { ($_.PSChildName -match 'Full') } `
       | Select-Object Version | Sort-Object -Property Version -Descending)[0]).Version
  ```
+ 您希望从适用于 Windows 的 Kinesis 代理发送数据的流（如果使用 Amazon Kinesis Data Streams）。使用[Kinesis Data Streams 控制台](https://console.aws.amazon.com/kinesis/)，[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/kinesis/create-stream.html)，或者[适用于 Windows PowerShell 的 AWS 工具](https://docs.aws.amazon.com/powershell/latest/reference/items/New-KINStream.html)。有关更多信息，请参阅 。[创建和更新数据流](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-streams.html)中的*Amazon Kinesis Data Streams 开发人员指南*。
+ 您希望从 Windows Kinesis 代理发送数据的 Firehose 传输流（如果使用 Amazon Kinesis Data Firehose）。创建交付流使用[Kinesis Data Firehose 控制台](https://console.aws.amazon.com/firehose/)，[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/firehose/create-delivery-stream.html)，或者[适用于 Windows PowerShell 的 AWS 工具](https://docs.aws.amazon.com/powershell/latest/reference/items/New-KINFDeliveryStream.html)。有关更多信息，请参阅 。[创建 Amazon Kinesis Data Firehose 传输流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)中的*Amazon Kinesis Data Firehose 开发人员指南*。

## 设置 AWS 账户
<a name="getting-started-setting-up"></a>

如果您还没有 AWS 账户，请完成以下步骤创建一个账户。

**如何注册 AWS 账户**

1. 打开 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)。

1. 按照屏幕上的说明进行操作。

   在注册时，您将接到一通电话，要求您使用电话键盘输入一个验证码。

**自行创建管理员用户并将该用户添加到管理员组（控制台）**

1. 登录到[IAM 控制台](https://console.aws.amazon.com/iam/)作为帐户所有者，方法是选择**根用户**并输入您的 AWS 账户电子邮件地址。在下一页上，输入您的密码。
**注意**  
强烈建议您遵守以下最佳实践：使用**Administrator**IAM 用户，遵守并妥善保存根用户凭证。只在执行少数[账户和服务管理任务](https://docs.aws.amazon.com/general/latest/gr/aws_tasks-that-require-root.html)时才作为根用户登录。

1. 在导航窗格中，选择**用户**，然后选择**添加用户**。

1. 对于 **User name (用户名)**，输入 **Administrator**。

1. 选中 **AWS Management Console access (AWS 管理控制台访问)** 旁边的复选框。然后选择**自定义密码**，并在文本框中输入新密码。

1. （可选）默认情况下，AWS 要求新用户在首次登录时创建新密码。您可以清除 **User must create a new password at next sign-in (用户必须在下次登录时创建新密码)** 旁边的复选框以允许新用户在登录后重置其密码。

1. 选择**后续：权限。**

1. 在**设置权限**下，选择**将用户添加到组**。

1. 选择**创建组**。

1. 在 **Create group (创建组)** 对话框中，对于 **Group name (组名称)**，输入 **Administrators**。

1. 选择**筛选策略**，然后选择**AWS 托管-工作职能**来过滤表格内容。

1. 在策略列表中，选中 **AdministratorAccess** 的复选框。然后选择 **Create group (创建组)**。
**注意**  
您必须先激活 IAM 用户和角色对账单的访问权限，然后才能使用 `AdministratorAccess` 权限访问 AWS 账单和成本管理控制台。为此，请按照[“向账单控制台委派访问权限”教程第 1 步](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_billing.html)中的说明进行操作。

1. 返回到组列表中，选中您的新组所对应的复选框。如有必要，选择 **Refresh** 以在列表中查看该组。

1. 选择**后续：标签**。

1. （可选）通过以键值对的形式附加标签来向用户添加元数据。有关在 IAM 中使用标签的更多信息，请参阅[标记 IAM 实体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)中的*IAM 用户指南*。

1. 选择**后续：审核**以查看要添加到新用户的组成员资格的列表。如果您已准备好继续，请选择 **Create user**。

您可使用此相同的流程创建更多的组和用户，并允许您的用户访问 AWS 账户资源。要了解有关使用策略限制用户对特定 AWS 资源的权限的信息，请参阅[访问管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)和[示例策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html)。

**注册 AWS 并创建管理员账户**

1. 如果您没有 AWS 账户，请打开[https://aws.amazon.com/](https://aws.amazon.com/)。选择**创建 AWS 账户**，然后按照联机说明操作。

   作为注册流程的一部分，您会收到一个电话，需要您使用电话键盘输入一个 PIN 码。

1. 登录 AWS 管理控制台，并通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择 **Groups (组)**，然后选择 **Create New Group (创建新组)**。

1. 对于**组名**，输入组的名称，例如 **Administrators**，然后选择 **下一步**。

1. 在策略列表中，选中 **AdministratorAccess** 策略旁边的复选框。您可以使用 **Filter (筛选)** 菜单和 **Search (搜索)** 框来筛选策略列表。

1. 选择 **Next Step**。选择**创建组**，您的新组将显示在**组名**下。

1. 在导航窗格中选择**用户**，然后选择**创建新用户**。

1. 在框 **1** 中，输入用户名，清除**为每个用户生成访问密钥**旁的复选框，然后选择**创建**。

1. 在用户列表中，选择您刚创建的用户的名称（而不是复选框）。您可以使用**搜索**框来搜索该用户名称。

1. 选择**组**选项卡，然后选择**将用户添加到多个组**。

1. 选中管理员组旁的复选框，然后选择**添加到多个组**。

1. 选择 **Security Credentials (安全证书)** 选项卡。在 **Sign-In Credentials (登录证书)** 下，选择 **Manage Password (管理密码)**。

1. 选择**分配自定义密码**，在**密码**和**确认密码**框中输入密码，然后选择**应用**。

## 安装适用于 Windows 的 Kinesis 代理
<a name="getting-started-installation"></a>

在 Windows 上有三种方法来安装适用于 Windows 的 Kinesis 代理：
+ 使用 MSI（Windows 安装程序包）进行安装。
+ 从安装[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/)，这是一组用于管理服务器和台式机的服务。
+ 运行 PowerShell 脚本。

**注意**  
下列说明偶尔会使用术语 *KinesisTap* 和 *AWSKinesisTap*。这些单词表达的含义与 Windows Kinesis 代理相同，但在执行这些指令时，您必须原样指定它们。

### 使用 MSI 安装适用于 Windows 的 Kinesis 代理
<a name="install-msi"></a>

您可以从 Windows MSI 软件包下载最新的 Kinesis 代理程序包从[GitHub 上的动态代理窗口存储库](https://github.com/awslabs/kinesis-agent-windows/releases)。下载 MSI 后，请使用 Windows 启动它并按照安装程序提示进行操作。安装后，你可以像卸载任何 Windows 应用程序一样。

此外，也可以使用[密西西克](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/msiexec)命令以静默方式安装、打开日志记录和卸载，如以下示例所示。Replace`AWSKinesisTap.1.1.216.4.msi with the appropriate version of Kinesis Agent for Windows for your application.`

**要以静默方式安装适用于 Windows 的 Kinesis 代理：**

```
msiexec /i AWSKinesisTap.1.1.216.4.msi /q
```

**将安装消息记录到名为`logfile.log`：**

```
msiexec /i AWSKinesisTap.1.1.216.4.msi /q /L*V logfile.log
```

**要使用命令提示符卸载适用于 Windows 的 Kinesis 代理，请执行以下操作：**

```
msiexec.exe /x {ADAB3982-68AA-4B45-AE09-7B9C03F3EBD3} /q
```

### 使用 AWS Systems Manager 安装适用于 Windows 的 Kinesis 代理
<a name="install-systems-manager"></a>

使用 Systems Manager Run Command，按照以下步骤安装适用于 Windows 的 Kinesis 代理。有关 Run Command 的更多信息，请参阅[AWS Systems Manager Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html)中的*AWS Systems Manager 用户指南*。除了使用 Systems Manager Run Command 之外，您还可以使用 Systems Manager[维护时段](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html)和[状态管理器](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-state.html)来自动部署适用于 Windows 的 Kinesis 代理程序。

**注意**  
适用于 Windows 的 Kinesis 代理的 Systems Manager 安装在[AWS Systems Manager](https://docs.aws.amazon.com/general/latest/gr/rande.html#ssm_region)但以下情况除外：  
cn-north-1
cn-northwest-1
所有 AWS GovCloud 区域。

**使用 Systems Manager 安装适用于 Windows 的 Kinesis 代理**

1. 确保在您希望安装适用于 Windows 的 Kinesis 代理程序的实例上，已经安装了版本 2.2.58.0 或更高版本。有关更多信息，请参阅 。[在 Windows 实例上安装和配置 SSM 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-win.html)中的*AWS Systems Manager 用户指南*。

1. 打开 AWS Systems Manager 控制台，网址为[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)。

1. 从导航窗格的**Node Management**中，选择**Run Command**，然后选择**Run Command**。

1. 从**命令文档**列表中，选择**AWS 配置 AWS-ConfigreAWSPackage**文档.  
![\[选择 AWS-ConfigreAWSPackage 文档。\]](http://docs.aws.amazon.com/zh_cn/kinesis-agent-windows/latest/userguide/images/runcommand-document-select.png)

1. UDER**命令参数**, 用于**名称**，输入**冬奥会**。将其他设置保留默认值。
**注意**  
离开**版本**空白以指定 AWSKinesiStap 软件包的最新版本。（可选）您可以输入要安装的特定版本。  
![\[在命令参数中指定 AWSKINE 软件包。\]](http://docs.aws.amazon.com/zh_cn/kinesis-agent-windows/latest/userguide/images/runcommand-specify-options.png)

1. UDER**目标**中，指定要对其运行命令的实例。您可以选择根据与实例关联的标签指定实例，也可以手动选择实例，也可以指定包含实例的资源组。

1. 将所有其他设置保留默认值，然后选择**运行**。

### 使用 PowerShell 安装适用于 Windows 的 Kinesis 代理
<a name="install-ps"></a>

使用文本编辑器将以下命令复制到文件中，然后将其保存为 PowerShell 脚本。我们使用`InstallKinesisAgent.ps1`，请参阅以下示例。

```
Param(
    [ValidateSet("prod", "beta", "test")]
    [string] $environment = 'prod',
    [string] $version,
    [string] $baseurl
)

# Self-elevate the script if required.
if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {
    if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
        $CommandLine = '-File "' + $MyInvocation.MyCommand.Path + '" ' + $MyInvocation.UnboundArguments
        Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine
        Exit
    }
}

# Allows input to change base url. Useful for testing.
if ($baseurl) {
    if (!$baseUrl.EndsWith("/")) {
        throw "Invalid baseurl param value. Must end with a trailing forward slash ('/')"
    }

    $kinesistapBaseUrl = $baseurl
} else {
    $kinesistapBaseUrl = "https://s3-us-west-2.amazonaws.com/kinesis-agent-windows/downloads/"
}

Write-Host "Using $kinesistapBaseUrl as base url"

$webClient = New-Object System.Net.WebClient

try {
    $packageJson = $webClient.DownloadString($kinesistapBaseUrl + 'packages.json' + '?_t=' + [System.DateTime]::Now.Ticks) | ConvertFrom-Json
} catch {
    throw "Downloading package list failed."
}


if ($version) {
    $kinesistapPackage = $packageJson.packages | Where-Object { $_.packageName -eq "AWSKinesisTap.$version.nupkg" }

    if ($null -eq $kinesistapPackage) {
        throw "No package found matching input version $version"
    }
} else {
    $packageJson = $packageJson.packages | Where-Object { $_.packageName -match ".nupkg" }
    $kinesistapPackage = $packageJson[0]
}

$packageName = $kinesistapPackage.packageName
$checksum = $kinesistapPackage.checksum

#Create %TEMP%/kinesistap if not exists
$kinesistapTempDir = Join-Path $env:TEMP 'kinesistap'
if (![System.IO.Directory]::Exists($kinesistapTempDir)) {[void][System.IO.Directory]::CreateDirectory($kinesistapTempDir)}

#Download KinesisTap.x.x.x.x.nupkg package
$kinesistapNupkgPath = Join-Path $kinesistapTempDir $packageName
$webClient.DownloadFile($kinesistapBaseUrl + $packageName, $kinesistapNupkgPath)
$kinesistapUnzipPath = $kinesistapNupkgPath.Replace('.nupkg', '')

# Calculates hash of downloaded file. Downlevel compatible using .Net hashing on PS < 4
if ($PSVersionTable.PSVersion.Major -ge 4) {
    $calculatedHash = Get-FileHash $kinesistapNupkgPath -Algorithm SHA256
    $hashAsString = $calculatedHash.Hash.ToLower()
} else {
    $sha256 = New-Object System.Security.Cryptography.SHA256CryptoServiceProvider
    $calculatedHash = [System.BitConverter]::ToString($sha256.ComputeHash([System.IO.File]::ReadAllBytes($kinesistapNupkgPath)))
    $hashAsString = $calculatedHash.Replace("-", "").ToLower()
}

if ($checksum -eq $hashAsString) {
	Write-Host 'Local file hash matches checksum.' -ForegroundColor Green
} else {
	throw ("Get-FileHash does not match! Package may be corrupted.")
}

#Delete Unzip path if not empty
if ([System.IO.Directory]::Exists($kinesistapUnzipPath)) {Remove-Item –Path $kinesistapUnzipPath -Recurse -Force}

#Unzip KinesisTap.x.x.x.x.nupkg package
$null = [System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($kinesistapNupkgPath, $kinesistapUnzipPath)

#Execute chocolaeyInstall.ps1 in the package and wait for completion.
$installScript = Join-Path $kinesistapUnzipPath '\tools\chocolateyInstall.ps1'
& $installScript

# Verify service installed.
$serviceName = 'AWSKinesisTap'
$service = Get-Service -Name $serviceName -ErrorAction Ignore
if ($null -eq $service) {
    throw ("Service not installed correctly.")
} else {
    Write-Host "Kinesis Tap Installed." -ForegroundColor Green
    Write-Host "After configuring run the following to start the service: Start-Service -Name $serviceName." -ForegroundColor Green
}
```

打开提升的命令提示符窗口。在文件下载到的目录中，使用以下命令来运行脚本：

```
PowerShell.exe -File ".\InstallKinesisAgent.ps1"
```

若要安装适用于 Windows 的特定版本的 Kinesis 代理，请将`-version`选项：

```
PowerShell.exe -File ".\InstallKinesisAgent.ps1" -version "version"
```

Replace*version*使用 Windows 版本号的有效 Kinesis 代理程序。有关版本信息，请参阅[GitHub 上的动态代理窗口存储库](https://github.com/awslabs/kinesis-agent-windows/blob/master/README.md)。

有许多部署工具可以远程执行 PowerShell 脚本。它们可用于在服务器机群或台式机上自动完成的 Windows Kinesis 代理安装。

## 配置和启动适用于 Windows 的 Kinesis 代理
<a name="getting-started-start-service"></a>

安装适用于 Windows 的 Kinesis 代理后，您必须配置并启动代理。在此之后，应该无需进一步的操作干预。

**配置和启动适用于 Windows 的 Kinesis 代理的步骤**

1. 创建和部署适用于 Windows 配置文件的 Kinesis 代理。此文件配置源、接收器和管道，以及其他全局配置项。

   有关 Windows 配置 Kinesis 代理的更多信息，请参阅[为微软 Windows 配置 Amazon Kinesis 运行代理](configuring-kinesis-agent-windows.md)。

   有关您可以自定义并安装的完整配置文件示例，请参阅[适用于 Windows 的 Kinesis 代理配置示例](configuring-kaw-examples.md)。

1. 打开一个提升的 PowerShell 命令提示符窗口，然后使用以下 PowerShell 命令启动 Windows Kinesis 代理程序：

   ```
   Start-Service -Name AWSKinesisTap
   ```