この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
概要
Amazon Kinesis Agent とは
Amazon Kinesis Agent for Windows はログとイベントおよびメトリクスを収集、変換、ストリーム配信します。 Kinesis AgentをEC2 Windowsインスタンスにインストールすることができます。
Kinesis Agentは次のサービスにストリーミングできます。
- Kinesis Data Firehose
- CloudWatch
- Kinesis Data Streams
この記事では、Kinesis AgentをEC2 Windowsインスタンスにインストールして、Kinesis Data Firehoseで JSON ログファイルをS3 に送信してみました。
やってみた
S3 バケットの作成
- S3 コンソールで、Create bucketを選択します。
- バケット名を入力して、S3バケットを作成しておきます。
Kinesis Data Firehose Deliveryストリームの作成
IAM ロールの作成
- IAM コンソールで、ポリシー名を入力して、次のポリシーを作成しておきます。
- このポリシーにより、Kinesis FirehoseがS3バケットにアクセスできるようになります。
- このポリシーには、以前に作成したS3バケットの名前を入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::kinesis-to-s3-windows",
"arn:aws:s3:::kinesis-to-s3-windows/*"
]
}
]
}
- この設定でIAMロールを作成しておきます。
- 信頼されたエンティティの種類 : AWS のサービス
- ユースケース : Kinesis Data Firehose
- ポリシー : 前の手順で作成したポリシーの名前
Deliveryストリームの作成
- Kinesis Data Firehoseのコンソールで、Create Delivery Streamを選択します。
- SourceでDirect PUTを選択して、 DestinationでAmason S3を選択して、Deliveryストリーム名入力しておきます。
- Destination設定で以前に作成したS3バケットURLの名前を入力します。
- Buffer intervalを60Secondsに設定しておきます。
- Permissionsで前の手順で作成しIAMロールの名前を選択して、Deliveryストリームを作成しておきます。
EC2 インスタンスの作成
IAM ロールの作成
- IAM コンソールで、ポリシー名を入力して、次のポリシーを作成しておきます。
- このポリシーには、以前に作成したDelivery ストリームのARNを入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"firehose:PutRecord",
"firehose:PutRecordBatch"
],
"Resource": "arn:aws:firehose:us-east-1:account-id:deliverystream/stream-logs"
}
]
}
- この設定でIAMロールを作成しておきます。
- 信頼されたエンティティの種類 : AWS のサービス
- ユースケース : EC2
- ポリシー : 前の手順で作成したポリシーの名前
EC2 Windows インスタンスの作成
- この設定でEC2 Windows インスタンスを作成しておきます。
- AMI : Microsoft Windows Server 2019
- インスタンスタイプ : t2.micro
- IAMロール : 前の手順で作成したIAMロール
- Security Group : Inbound - RDP
Kinesis Agentの作成
- RDPを使用してEC2インスタンスに接続しておきます。
- PowerShellを開き、次のコマンドを実行して、Kinesisエージェントの最新バージョンをインストールします。
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://s3-us-west-2.amazonaws.com/kinesis-agent-windows/downloads/InstallKinesisAgent.ps1'))
- C:\LogFiles\ディレクトリを作成して、このディレクトリにJSON Formatのログファイル[JsonLogs.log]を作成しておきます。
- 次のコードでConfigurationファイルを作成して、Program Files\Amazon\AWSKinesisTap\appsettings.jsonにファイルを保存しておきます。
{
"Sources": [
{
"Id": "JsonLogFile",
"SourceType": "DirectorySource",
"RecordParser": "SingleLineJson",
"Directory": "C:\\LogFiles\\",
"FileNameFilter": "*.log",
"InitialPosition": 0
}
],
"Sinks": [
{
"Id": "Firehose",
"SinkType": "KinesisFirehose",
"StreamName": "stream-logs",
"Region": "us-east-1",
"Format": "json"
}
],
"Pipes": [
{
"Id": "StreamLogs",
"SourceRef": "JsonLogFile",
"SinkRef": "Firehose"
}
]
}
- 次のコマンドでKinesisエージェントを起動しておきます。
Start-Service -Name AWSKinesisTap
- 次のコマンドでKinesisエージェントのステータスを確認できます。
Get-Service -Name AWSKinesisTap
- S3バケットでログファイルを見ることができます。
- 次のコマンドでKinesisエージェントを停止できます。
Stop-Service -Name AWSKinesisTap
まとめ
Kinesis Agent for Windowsで JSONログファイルをS3 に送信してみました。
Reference :