本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 Microsoft Windows 的 Amazon Kinesis 代理入门
您可以使用适用于微软 Windows 的 Amazon Kinesis 代理程序(适用于 Windows 的 Kinesis 代理)从 Windows 队列收集、分析、转换和流式传输日志、事件和指标到各种 AWS 服务。以下信息包含用于 Windows 的 Kinesis 代理程序的先决条件和分步说明。
Prerequisites
在安装 Windows Kinesis 代理之前,请确保您具备以下先决条件:
-
熟悉 Windows 的 Kinesis 代理概念。有关更多信息,请参阅 面向微软 Windows 概念的 Amazon Kinesis 代理。
-
AWS 账户,用于使用与数据管道相关的各种 AWS 服务。有关创建和配置 AWS 账户的更多信息,请参阅设置 AWS 账户。
-
Microsoft .NET Framework 4.6 或更高版本,安装在每个将运行 Windows 代理程序的台式机或服务器上。有关更多信息,请参阅 Microsoft .NET 文档中的安装面向开发人员的 .NET Framework
。 要确定台式机或服务器上安装的 .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 控制台
,AWS CLI,或者适用于 Windows PowerShell 的 AWS 工具。有关更多信息,请参阅 。创建和更新数据流中的Amazon Kinesis Data Streams 开发人员指南。 -
您希望从 Windows Kinesis 代理发送数据的 Firehose 传输流(如果使用 Amazon Kinesis Data Firehose)。创建交付流使用Kinesis Data Firehose 控制台
,AWS CLI,或者适用于 Windows PowerShell 的 AWS 工具。有关更多信息,请参阅 。创建 Amazon Kinesis Data Firehose 传输流中的Amazon Kinesis Data Firehose 开发人员指南。
设置 AWS 账户
如果您还没有 AWS 账户,请完成以下步骤创建一个账户。
如何注册 AWS 账户
按照屏幕上的说明进行操作。
在注册时,您将接到一通电话,要求您使用电话键盘输入一个验证码。
自行创建管理员用户并将该用户添加到管理员组(控制台)
-
登录到IAM 控制台
作为帐户所有者,方法是选择根用户并输入您的 AWS 账户电子邮件地址。在下一页上,输入您的密码。 注意
强烈建议您遵守以下最佳实践:使用
Administrator
IAM 用户,遵守并妥善保存根用户凭证。只在执行少数账户和服务管理任务时才作为根用户登录。 -
在导航窗格中,选择用户,然后选择添加用户。
-
对于 User name (用户名),输入
Administrator
。 -
选中 AWS Management Console access (AWS 管理控制台访问) 旁边的复选框。然后选择自定义密码,并在文本框中输入新密码。
-
(可选)默认情况下,AWS 要求新用户在首次登录时创建新密码。您可以清除 User must create a new password at next sign-in (用户必须在下次登录时创建新密码) 旁边的复选框以允许新用户在登录后重置其密码。
-
选择后续:权限。
-
在设置权限下,选择将用户添加到组。
-
选择创建组。
-
在 Create group (创建组) 对话框中,对于 Group name (组名称),输入
Administrators
。 -
选择筛选策略,然后选择AWS 托管-工作职能来过滤表格内容。
-
在策略列表中,选中 AdministratorAccess 的复选框。然后选择 Create group (创建组)。
注意
您必须先激活 IAM 用户和角色对账单的访问权限,然后才能使用
AdministratorAccess
权限访问 AWS 账单和成本管理控制台。为此,请按照“向账单控制台委派访问权限”教程第 1 步中的说明进行操作。 -
返回到组列表中,选中您的新组所对应的复选框。如有必要,选择 Refresh 以在列表中查看该组。
-
选择后续:标签。
-
(可选)通过以键值对的形式附加标签来向用户添加元数据。有关在 IAM 中使用标签的更多信息,请参阅标记 IAM 实体中的IAM 用户指南。
-
选择后续:审核以查看要添加到新用户的组成员资格的列表。如果您已准备好继续,请选择 Create user。
您可使用此相同的流程创建更多的组和用户,并允许您的用户访问 AWS 账户资源。要了解有关使用策略限制用户对特定 AWS 资源的权限的信息,请参阅访问管理和示例策略。
注册 AWS 并创建管理员账户
-
如果您没有 AWS 账户,请打开https://aws.amazon.com/
。选择创建 AWS 账户,然后按照联机说明操作。 作为注册流程的一部分,您会收到一个电话,需要您使用电话键盘输入一个 PIN 码。
登录 AWS 管理控制台,并通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Groups (组),然后选择 Create New Group (创建新组)。
-
对于组名,输入组的名称,例如
Administrators
,然后选择 下一步。 -
在策略列表中,选中 AdministratorAccess 策略旁边的复选框。您可以使用 Filter (筛选) 菜单和 Search (搜索) 框来筛选策略列表。
-
选择 Next Step。选择创建组,您的新组将显示在组名下。
-
在导航窗格中选择用户,然后选择创建新用户。
-
在框 1 中,输入用户名,清除为每个用户生成访问密钥旁的复选框,然后选择创建。
-
在用户列表中,选择您刚创建的用户的名称(而不是复选框)。您可以使用搜索框来搜索该用户名称。
-
选择组选项卡,然后选择将用户添加到多个组。
-
选中管理员组旁的复选框,然后选择添加到多个组。
-
选择 Security Credentials (安全证书) 选项卡。在 Sign-In Credentials (登录证书) 下,选择 Manage Password (管理密码)。
-
选择分配自定义密码,在密码和确认密码框中输入密码,然后选择应用。
安装适用于 Windows 的 Kinesis 代理
在 Windows 上有三种方法来安装适用于 Windows 的 Kinesis 代理:
使用 MSI(Windows 安装程序包)进行安装。
-
从安装AWS Systems Manager,这是一组用于管理服务器和台式机的服务。
-
运行 PowerShell 脚本。
注意
下列说明偶尔会使用术语 KinesisTap 和 AWSKinesisTap。这些单词表达的含义与 Windows Kinesis 代理相同,但在执行这些指令时,您必须原样指定它们。
使用 MSI 安装适用于 Windows 的 Kinesis 代理
您可以从 Windows MSI 软件包下载最新的 Kinesis 代理程序包从GitHub 上的动态代理窗口存储库
此外,也可以使用密西西克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*Vlogfile.log
要使用命令提示符卸载适用于 Windows 的 Kinesis 代理,请执行以下操作:
msiexec.exe /x {ADAB3982-68AA-4B45-AE09-7B9C03F3EBD3} /q
使用 AWS Systems Manager 安装适用于 Windows 的 Kinesis 代理
使用 Systems Manager Run Command,按照以下步骤安装适用于 Windows 的 Kinesis 代理。有关 Run Command 的更多信息,请参阅AWS Systems Manager Run Command中的AWS Systems Manager 用户指南。除了使用 Systems Manager Run Command 之外,您还可以使用 Systems Manager维护时段和状态管理器来自动部署适用于 Windows 的 Kinesis 代理程序。
注意
适用于 Windows 的 Kinesis 代理的 Systems Manager 安装在AWS Systems Manager但以下情况除外:
cn-north-1
cn-northwest-1
所有 AWS GovCloud 区域。
使用 Systems Manager 安装适用于 Windows 的 Kinesis 代理
-
确保在您希望安装适用于 Windows 的 Kinesis 代理程序的实例上,已经安装了版本 2.2.58.0 或更高版本。有关更多信息,请参阅 。在 Windows 实例上安装和配置 SSM 代理中的AWS Systems Manager 用户指南。
打开 AWS Systems Manager 控制台,网址为https://console.aws.amazon.com/systems-manager/
。 -
从导航窗格的Node Management中,选择Run Command,然后选择Run Command。
-
从命令文档列表中,选择AWS 配置 AWS-ConfigreAWSPackage文档.
-
UDER命令参数, 用于名称,输入冬奥会。将其他设置保留默认值。
注意
离开版本空白以指定 AWSKinesiStap 软件包的最新版本。(可选)您可以输入要安装的特定版本。
-
UDER目标中,指定要对其运行命令的实例。您可以选择根据与实例关联的标签指定实例,也可以手动选择实例,也可以指定包含实例的资源组。
-
将所有其他设置保留默认值,然后选择运行。
使用 PowerShell 安装适用于 Windows 的 Kinesis 代理
使用文本编辑器将以下命令复制到文件中,然后将其保存为 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
"
Replaceversion
使用 Windows 版本号的有效 Kinesis 代理程序。有关版本信息,请参阅GitHub 上的动态代理窗口存储库
有许多部署工具可以远程执行 PowerShell 脚本。它们可用于在服务器机群或台式机上自动完成的 Windows Kinesis 代理安装。
配置和启动适用于 Windows 的 Kinesis 代理
安装适用于 Windows 的 Kinesis 代理后,您必须配置并启动代理。在此之后,应该无需进一步的操作干预。
配置和启动适用于 Windows 的 Kinesis 代理的步骤
-
创建和部署适用于 Windows 配置文件的 Kinesis 代理。此文件配置源、接收器和管道,以及其他全局配置项。
有关 Windows 配置 Kinesis 代理的更多信息,请参阅为微软 Windows 配置 Amazon Kinesis 运行代理。
有关您可以自定义并安装的完整配置文件示例,请参阅适用于 Windows 的 Kinesis 代理配置示例。
-
打开一个提升的 PowerShell 命令提示符窗口,然后使用以下 PowerShell 命令启动 Windows Kinesis 代理程序:
Start-Service -Name AWSKinesisTap