
Kinesis Agent for Windowsで ログファイルをS3 に送信してみた。
2022.01.18
この記事は公開されてから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 :










