Kinesis Agent for Windowsで ログファイルをS3 に送信してみた。

2022.01.18

概要

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 :

Kinesis Agent for Windows

Kinesis Agent Configuration