シンク宣言 - Microsoft Windows の Amazon Kinesis エージェント

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

シンク宣言

シンク宣言は、ログ、イベント、メトリクスがさまざまな AWS サービスに送信される場所と形式を指定します。以下のセクションでは、Microsoft Windows の Amazon Kinesis Agent で使用可能な組み込みシンクタイプの設定について説明します。Windows 用 Kinesis Agent は拡張可能であるため、カスタムのシンクタイプを追加できます。通常、各シンクタイプには、そのシンクタイプに関連する、設定宣言の一意のキーと値のペアが必要です。

すべてのシンク宣言には、次のキーと値のペアを含めることができます。

Id

設定ファイル内で特定のシンクを識別する一意の文字列 (必須)。

SinkType

このシンクのシンクタイプの名前 (必須)。シンクタイプは、このシンクによってストリーミングされるログ、イベント、またはメトリクスのデータの送信先を指定します。

AccessKey

シンクタイプに関連付けられている AWS サービスへのアクセスを許可するときに使用する AWS アクセスキーを指定します。このキーと値のペアはオプションです。詳細については、「シンクセキュリティの設定」を参照してください。

SecretKey

シンクタイプに関連付けられている AWS サービスへのアクセスを許可するときに使用する AWS シークレットキーを指定します。このキーと値のペアはオプションです。詳細については、「シンクセキュリティの設定」を参照してください。

Region

ストリーミングの送信先リソースが含まれる AWS リージョンを指定します。このキーと値のペアはオプションです。

ProfileName

認証に使用する AWS プロファイルを指定します。このキーと値のペアはオプションですが、指定した場合は、その値のペアが指定したアクセスキーとシークレットキーよりも優先されます。詳細については、「シンクセキュリティの設定」を参照してください。

RoleARN

シンクタイプに関連付けられている AWS サービスにアクセスするときに使用する IAM ロールを指定します。このオプションは、EC2 インスタンスで実行されている Kinesis Agent for Windows が EC2 インスタンスで実行されている場合に役立ちますが、インスタンスプロファイルによって参照されるロールよりも別のロールの方が適切です。たとえば、クロスアカウントロールを使用して、EC2 インスタンスと同じ AWS アカウントにないリソースを対象にすることができます。このキーと値のペアはオプションです。

Format

ストリーミングの前にログおよびイベントデータに適用されるシリアル化の種類を指定します。有効な値は、json および xml です。このオプションは、データパイプラインのダウンストリーム分析で特別の形式のデータが必要であるか、特別の形式のデータの使用が好ましい場合に役立ちます。このキーと値のペアはオプションです。指定しない場合は、ソースの通常のテキストがシンクからシンクタイプに関連付けられている AWS サービスにストリーミングされます。

TextDecoration

Format を指定しない場合、TextDecoration はログレコードまたはイベントレコードのストリーミング時に含まれる追加のテキストを指定します。詳細については、「シンクデコレーションの設定」を参照してください。このキーと値のペアはオプションです。

ObjectDecoration

Format を指定した場合、ObjectDecoration はシリアル化およびストリーミングの前にログレコードまたはイベントレコードに含まれる追加のデータを指定します。詳細については、「シンクデコレーションの設定」を参照してください。このキーと値のペアはオプションです。

BufferInterval

シンクタイプに関連付けられている AWS サービスの API コールを最小限に抑えるために、Kinesis Agent for Windows では、ストリーミングの前にログ、イベント、またはメトリクスの複数のレコードをバッファします。これにより、API コールあたりのサービス料金を節約することができます。BufferInterval は AWS サービスにストリーミングする前にレコードをバッファする必要がある最大時間 (秒) を指定します。このキーと値のペアはオプションです。指定する場合、値を表す文字列を使用します。

BufferSize

シンクタイプに関連付けられている AWS サービスの API コールを最小限に抑えるために、Kinesis Agent for Windows では、ストリーミングの前にログ、イベント、またはメトリクスの複数のレコードをバッファします。これにより、API コールあたりのサービス料金を節約することができます。BufferSize は AWS サービスにストリーミングする前にバッファするレコードの最大数を指定します。このキーと値のペアはオプションです。指定する場合、値を表す文字列を使用します。

MaxAttempts

ストリーミングが何度も失敗する場合に Kinesis Agent for Windows が AWS サービスにログ、イベント、およびメトリクスの一連のレコードをストリーミングする最大試行回数を指定します。このキーと値のペアはオプションです。指定する場合、値を表す文字列を使用します。デフォルト値は 3 です。

さまざまな種類のシンクを使用する完全な設定ファイルの例については、Windows アプリケーションイベントログからシンクへのストリーミングを参照してください。

KinesisStream シンクの設定

-KinesisStreamシンクタイプは、Kinesis Data Streams サービスにレコードおよびイベントをログします。通常、Kinesis Data Streams にストリーミングされるデータは、さまざまな AWS サービスを使用して実行する 1 つ以上のカスタムアプリケーションによって処理されます。データは、Kinesis Data Streams を使用して設定された名前付きストリームにストリーミングされます。詳細については、「」を参照してください。Amazon Kinesis Data Streams 開発者ガイド

次に、Kinesis Data Streams のシンク宣言の例を示します。

{ "Id": "TestKinesisStreamSink", "SinkType": "KinesisStream", "StreamName": "MyTestStream", "Region": "us-west-2" }

KinesisStream のすべてのシンク宣言には、次の追加のキーと値のペアを含めることができます。

SinkType

このペアを指定する必要があります。値はリテラル文字列 KinesisStream にする必要があります。

StreamName

ストリーミングされたデータを受信する Kinesis データストリームの名前を指定します。KinesisStreamシンクタイプ (必須)。データをストリーミングする前に、または Kinesis Data Streams API を使用したアプリケーションを介してストリームを設定します。

RecordsPerSecond

1 秒あたりに Kinesis Data Streams にストリーミングされるレコードの最大数を指定します。このキーと値のペアはオプションです。指定する場合、値を表す整数を使用します。デフォルト値は 1000 レコードです。

BytesPerSecond

1 秒あたりに Kinesis Data Streams にストリーミングされる最大バイト数を指定します。このキーと値のペアはオプションです。指定する場合、値を表す整数を使用します。デフォルト値は 1 MB です。

このシンクタイプのデフォルトの BufferInterval は 1 秒で、デフォルトの BufferSize は 500 レコードです。

KinesisFirehose シンクの設定

-KinesisFirehoseシンクタイプは、ログレコードおよびイベントを Kinesis Data Firehose サービスにストリーミングします。Kinesis Data Firehose は、ストリーミングされたデータをストレージ用にその他のサービスにストリーミングします。通常、保存されたデータは、データパイプラインのその後のステージで分析されます。データは、Kinesis Data Firehose を使用して設定された名前付き配信ストリームにストリーミングされます。詳細については、「」を参照してください。Amazon Kinesis Data Firehose 開発者ガイド

次に、Kinesis Data Firehose シンク宣言の例を示します。

{ "Id": "TestKinesisFirehoseSink", "SinkType": "KinesisFirehose", "StreamName": "MyTestFirehoseDeliveryStream", "Region": "us-east-1", "CombineRecords": "true" }

KinesisFirehose のすべてのシンク宣言には、次の追加のキーと値のペアを含めることができます。

SinkType

このペアを指定する必要があります。値はリテラル文字列 KinesisFirehose にする必要があります。

StreamName

ストリーミングされたデータを受信する Kinesis Data Firehose 配信ストリームの名前を指定します。KinesisStreamシンクタイプ (必須)。データをストリーミングする前に、あるいは Kinesis Data Firehose AWS を使用したアプリケーションを介して配信ストリームを設定します。

CombineRecords

に設定した場合trueの場合、複数の小さなレコードを、最大サイズが 5 KB の大きいレコードに結合することを指定します。このキーと値のペアはオプションです。この関数を使用して結合されたレコードは\n。AWS Lambda を使用して Kinesis Data Firehose レコードを変換する場合、Lambda 関数で区切り文字を考慮する必要があります。

RecordsPerSecond

1 秒あたりに Kinesis Data Streams にストリーミングされるレコードの最大数を指定します。このキーと値のペアはオプションです。指定する場合、値を表す整数を使用します。デフォルト値は 5000 レコードです。

BytesPerSecond

1 秒あたりに Kinesis Data Streams にストリーミングされる最大バイト数を指定します。このキーと値のペアはオプションです。指定する場合、値を表す整数を使用します。デフォルト値は 5 MB です。

このシンクタイプのデフォルトの BufferInterval は 1 秒で、デフォルトの BufferSize は 500 レコードです。

CloudWatch シンクの設定

-CloudWatchシンクタイプは、メトリクスを CloudWatch サービスにストリーミングします。AWS マネジメントコンソールでメトリクスを表示できます。詳細については、Amazon CloudWatch ユーザーガイドを参照してください。

次に、CloudWatch のシンク宣言の例を示します。

{ "Id": "CloudWatchSink", "SinkType": "CloudWatch" }

CloudWatch のすべてのシンク宣言には、次の追加のキーと値のペアを含めることができます。

SinkType

このペアを指定する必要があります。値はリテラル文字列 CloudWatch にする必要があります。

Interval

Windows 用 Kinesis Agent for Windows が CloudWatch サービスにメトリクスをレポートする頻度 (秒) を指定します。このキーと値のペアはオプションです。指定する場合、値を表す整数を使用します。デフォルト値は 60 秒です。高解像度の CloudWatch メトリクスが必要な場合は 1 秒を指定します。

Namespace

メトリクスデータがレポートされる CloudWatch 名前空間を指定します。CloudWatch 名前空間により、一連のメトリクスがグループ化されます。このキーと値のペアはオプションです。デフォルト値は KinesisTap です。

Dimensions

名前空間内のメトリクスセットの分離に使用する CloudWatch ディメンションを指定します。これは、たとえばデスクトップまたはサーバーごとに個別のメトリクスセットを提供する上で有益です。このキーと値のペアはオプションです。指定する場合、値は "key1=value1;key2=value2..." の形式に準拠する必要があります。デフォルト値は "ComputerName={computername};InstanceId={instance_id}" です。この値はシンク変数の置換をサポートしています。詳細については、「シンク変数の置換の設定」を参照してください。

MetricsFilter

組み込み Kinesis Agent for Windows メトリクスソースから CloudWatch にストリーミングされるメトリクスを指定します。組み込みの Kinesis Agent for Windows メトリクスソースの詳細 (このキーと値のペアの値の構文の詳細など) については、Windows 組み込みメトリクスソース Kinesis エージェント

CloudWatchLogs シンクの設定

-CloudWatchLogsシンクタイプは、ログレコードおよびイベントを Amazon CloudWatch Logs にストリーミングします。AWS マネジメントコンソールでログを表示したり、データパイプラインの追加のステージでログを処理したりすることができます。データは、CloudWatch Logs で設定された名前付きログストリームにストリーミングされます。ログストリームは名前付きロググループにまとめられます。詳細については、 Amazon CloudWatch ログユーザーガイドを参照してください

CloudWatch Logs シンク宣言の例を以下に示します。

{ "Id": "MyCloudWatchLogsSink", "SinkType": "CloudWatchLogs", "BufferInterval": "60", "BufferSize": "100", "Region": "us-west-2", "LogGroup": "MyTestLogGroup", "LogStream": "MyTestStream" }

CloudWatchLogs のすべてのシンク宣言には、次の追加のキーと値のペアを入力する必要があります。

SinkType

リテラル文字列 CloudWatchLogs である必要があります。

LogGroup

によってストリーミングされたログレコードおよびイベントレコードを受信するログストリームを含む CloudWatch Logs ロググループの名前を指定します。CloudWatchLogsシンクタイプ。指定されたロググループが存在しない場合は、Kinesis Agent for Windows によってその作成が試行されます。

LogStream

によってログレコードおよびイベントレコードストリームを受信する CloudWatch Logs ログストリームの名前を指定します。CloudWatchLogsシンクタイプ。この値はシンク変数の置換をサポートしています。詳細については、「シンク変数の置換の設定」を参照してください。指定されたログストリームが存在しない場合は、Kinesis Agent for Windows によってその作成が試行されます。

このシンクタイプのデフォルトの BufferInterval は 1 秒で、デフォルトの BufferSize は 500 レコードです。最大バッファサイズは 10,000 レコードです。

ローカルFileSystemシンクの設定

シンクのタイプFileSystemは、ログおよびイベントレコードを AWS サービスにストリーミングするのではなく、ローカルファイルシステム上のファイルに保存します。FileSystemシンクは、テストや診断に役立ちます。たとえば、このシンクタイプを使用して、レコードを AWS に送信する前に調べることができます。

FileSystemシンクでは、設定パラメーターを使用して、バッチ処理、スロットリング、再試行をシミュレートして、実際の AWS シンクの動作を模倣することもできます。

接続されているすべてのソースからのすべてのレコードFileSystemシンクは、FilePath。もしFilePathが指定されなかった場合、レコードはSinkId.txt()%TEMP%ディレクトリーです。通常はC:\Users\UserName\AppData\Local\Tempここで、とします。SinkIdシンクの一意の識別子であり、UserNameは、アクティブなユーザーの Windows ユーザー名です。

このシンクタイプは、テキストの装飾属性をサポートします。詳細については、「シンクデコレーションの設定」を参照してください。

FileSystemシンクタイプの設定を以下の例で示します。

{ "Id": "LocalFileSink", "SinkType": "FileSystem", "FilePath": "C:\\ProgramData\\Amazon\\local_sink.txt", "Format": "json", "TextDecoration": "", "ObjectDecoration": "" }

-FileSystem設定は、以下のキーと値のペアで構成されます。

SinkType

リテラル文字列 FileSystem である必要があります。

FilePath

レコードを保存するパスとファイルを指定します。このキーと値のペアはオプションです。指定されなかった場合、デフォルト値はTempPath\\SinkId.txtここで、とします。TempPathに格納されているフォルダです。%TEMP%変数と変数SinkIdシンクの一意の識別子です。

Format

イベントの形式を指定しますjsonまたはxml。このキー値のペアはオプションで、大文字と小文字は区別されません。省略すると、イベントはプレーンテキストでファイルに書き込まれます。

TextDecoration

プレーンテキストで記述されたイベントにのみ適用されます。このキーと値のペアはオプションです。

ObjectDecoration

次のイベントにのみ適用されます。Formatは、 に設定されます。json。このキーと値のペアはオプションです。

高度な使用法 — 記録スロットリングと障害シミュレーション

FileSystemは、レコードスロットリングをシミュレートすることで、AWS シンクの動作を模倣できます。次のキーと値のペアを使用して、レコードスロットルおよび障害シミュレーション属性を指定できます。

宛先ファイルのロックを取得し、そのファイルへの書き込みを防止することで、FileSystemシンクを使用して、ネットワークに障害が発生したときの AWS シンクの動作をシミュレートし、調べます。

以下の例は、以下を示していますFileSystem構成をシミュレーション属性で設定します。

{ "Id": "LocalFileSink", "SinkType": "FileSystem", "FilePath": "C:\\ProgramData\\Amazon\\local_sink.txt", "TextDecoration": "", "RequestsPerSecond": "100", "BufferSize": "10", "MaxBatchSize": "1024" }
RequestsPerSecond

オプションで、文字列型として指定します。省略した場合、デフォルト値は"5"。レコード数ではなく、シンクが処理する要求 (ファイルへの書き込み) のレートを制御します。Kinesis Agent for Windows は AWS エンドポイントに対してバッチリクエストを行うため、リクエストに複数のレコードが含まれる場合があります。

BufferSize

オプションで、文字列型として指定します。ファイルに保存する前にシンクがバッチ処理するイベントレコードの最大数を指定します。

MaxBatchSize

オプションで、文字列型として指定します。ファイルに保存する前にシンクがバッチ処理するイベントレコードデータの最大量をバイト単位で指定します。

最大レコードレート制限は、BufferSizeリクエストあたりの最大レコード数を決定し、RequestsPerSecond。次の式を使用して、1 秒あたりの記録レート制限を計算できます。

レコードレート=BufferSize*RequestsPerSecond

上記の例の設定値を指定すると、最大レコードレートは 1000 レコード/秒です。

シンクセキュリティの設定

認証の設定

Kinesis Agent for Windows が AWS サービスにログ、イベント、およびメトリクスをストリーミングする場合、アクセスの認証が必要です。Windows 用 Kinesis Agent に認証を提供するには、いくつかの方法があります。認証を提供する方法は、Kinesis Agent for Windows が実行されている状況と特定の組織の特定のセキュリティ要件によって異なります。

  • Kinesis Agent for Windows が Amazon EC2 ホストで実行されている場合、認証を提供する安全で簡単な方法は、必要な AWS サービスで必要なオペレーションへの十分なアクセス権限がある IAM ロールとそのロールを参照する EC2 インスタンスプロファイルを作成することです。インスタンスプロファイルの作成については、「インスタンスプロファイルの使用」を参照してください。IAM ロールにアタッチするポリシーについては、「」を参照してください。認可の設定

    インスタンスプロファイルを作成した後、Kinesis Agent for Windows を使用するすべての EC2 インスタンスにそれを関連付けることができます。関連付けられたインスタンスプロファイルがすでにインスタンスにある場合は、そのインスタンスプロファイルに関連付けられているロールに適切なポリシーをアタッチすることができます。

  • Kinesis Agent for Windows が 1 つのアカウントの EC2 ホストで実行されていても、シンクのターゲットであるリソースが別のアカウントに存在する場合、クロスアカウントアクセスで IAM ロールを作成することができます。詳細については、「」を参照してください。チュートリアル: IAM ロールを使用した AWS アカウント間のアクセスの委任。クロスアカウントロールを作成した後、そのクロスアカウントロールの Amazon リソースネーム (ARN) をRoleARNシンク宣言でキーと値のペア。その後、そのシンクのシンクタイプに関連付けられている AWS リソースにアクセスしたときに Kinesis Agent for Windows によって指定したクロスアカウントロールの引き受けが試行されます。

  • Windows の Kinesis Agent が Amazon EC2 の外部で実行されている場合 (たとえば、オンプレミス)、以下のいくつかのオプションがあります。

    • オンプレミスサーバーまたはデスクトップマシンを Amazon EC2 Systems Manager マネージドインスタンスとして登録できる場合は、以下のプロセスを使用して認証を設定します。

      1. ハイブリッド環境での AWS Systems Manager の設定」で説明されているプロセスを使用して、サービスロールを作成してマネージドインスタンスのアクティベーションを作成し、SSM エージェントをインストールします。

      2. 適切なポリシーをサービスロールにアタッチして、Kinesis Agent for Windows が設定されたシンクからデータをストリーミングするために必要なリソースにアクセスできるようにします。IAM ロールにアタッチするポリシーについては、「」を参照してください。認可の設定

      3. で説明されているプロセスを使用します。の設定ProfileRefreshingAWSCredentialProviderAWS 認証情報の更新をクリックして AWS 認証情報を更新します。

      認証情報は SSM および AWS によって管理されるため、この方法が EC2 以外のインスタンスに推奨されます。

    • デフォルトシステムアカウントではなく特定のユーザーで Kinesis Agent for Windows の AWSKinesisTAP サービスを実行することが許容できる場合は、以下のプロセスを使用します。

      1. AWS サービスを使用する AWS アカウントで IAM ユーザーを作成します。作成プロセス時にこのユーザーのアクセスキーとシークレットキーをキャプチャします。この情報は、このプロセスの後のステップで必要です。

      2. 必要なサービスの必要なオペレーションへのアクセスを認証する IAM ユーザーにポリシーをアタッチします。IAM ユーザーにアタッチするポリシーについては、「」を参照してください。認可の設定

      3. 各デスクトップまたはサーバーで AWSKinesisTap サービスを変更して、デフォルトシステムアカウントではなく特定のユーザーでそのサービスが実行されるようにします。

      4. 前のステップで記録したアクセスキーとシークレットキーを使用して SDK ストアでプロファイルを作成します。詳細については、「AWS 認証情報の設定」を参照してください。

      5. %PROGRAMFILES%\Amazon\AWSKinesisTap ディレクトリの AWSKinesisTap.exe.config ファイルを更新して、前のステップで作成したプロファイルの名前を指定します。詳細については、「AWS 認証情報の設定」を参照してください。

      認証情報が特定のホストおよび特定のユーザーに対して暗号化されるため、この方法がマネージドインスタンスにすることができない EC2 以外のホストに推奨されます。

    • デフォルトシステムアカウントで Kinesis Agent for Windows の AWSKinesisTAP サービスを実行する必要がある場合、共有認証情報ファイルを使用する必要があります。これは、SDK ストアを有効にするための Windows ユーザープロファイルがシステムアカウントにないためです。共有認証情報ファイルが暗号化されないため、この方法は推奨されません。共有構成ファイルの使用方法については、「」を参照してください。AWS 認証情報の設定()AWS SDK for .NET。この方法を使用する場合、NTFS 暗号化と、共有設定ファイルに制限されたファイルアクセスを使用することをお勧めします。キーは管理プラットフォームによって更新される必要があり、キーの更新が発生したときに共有設定ファイルを更新する必要があります。

シンク宣言でアクセスキーとシークレットを直接指定できますが、その宣言が暗号化されないため、この方法は推奨されません。

認可の設定

以下の適切なポリシーを、Kinesis Agent for Windows が AWS サービスにデータをストリーミングするために使用する IAM ユーザーまたはロールにアタッチします。

Kinesis Data Streams

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": "arn:aws:kinesis:*:*:stream/*" } ] }

特定のリージョン、アカウント、またはストリーム名への認可を制限するには、ARN で該当するアスタリスクを特定の値に置き換えます。詳細については、「Amazon Kinesis Data Streams による IAM リソースに対するアクセスの制御」の「Kinesis Data Streams 用の Amazon リソースネーム (ARN)」を参照してください。

Kinesis Data Firehose

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:*:*:deliverystream/*" } ] }

特定のリージョン、アカウント、または配信ストリーム名への認可を制限するには、ARN で該当するアスタリスクを特定の値に置き換えます。詳細については、「」を参照してください。Amazon Kinesis Data Firehose によるアクセスの制御()Amazon Kinesis Data Firehose 開発者ガイド

CloudWatch

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor2", "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" } ] }

詳細については、「」を参照してください。CloudWatch リソースに対するアクセス許可の管理の概要()Amazon CloudWatch Logs ユーザーガイド

既存のロググループとログストリームを使用した CloudWatch Logs

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor3", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:*" }, { "Sid": "VisualEditor4", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:*:*:log-group:*:*:*" } ] }

特定のリージョン、アカウント、ロググループ、またはログストリームへのアクセスを制限するには、ARN で該当するアスタリスクを適切な値に置き換えます。詳細については、「」を参照してください。CloudWatch Logs リソースに対するアクセス許可の管理の概要()Amazon CloudWatch Logs ユーザーガイド

Kinesis Agent for Windows がロググループとログストリームを作成するための追加のアクセス許可を持つ CloudWatch Logs

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor5", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:*" }, { "Sid": "VisualEditor6", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:*:*:log-group:*:*:*" }, { "Sid": "VisualEditor7", "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "*" } ] }

特定のリージョン、アカウント、ロググループ、またはログストリームへのアクセスを制限するには、ARN で該当するアスタリスクを適切な値に置き換えます。詳細については、「」を参照してください。CloudWatch Logs リソースに対するアクセス許可の管理の概要()Amazon CloudWatch Logs ユーザーガイド

EC2 タグ変数の展開に必要なアクセス許可

ec2tag 変数プレフィックスでの変数の展開の使用には、ec2:Describe* アクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor8", "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" } ] }
注記

各ステートメントの Sid が 1 つのポリシー内で一意である限り、複数のステートメントをそのポリシーに結合することができます。ポリシーの作成の詳細については、「」を参照してください。IAM ポリシーの作成()IAM ユーザーガイド

の設定ProfileRefreshingAWSCredentialProviderAWS 認証情報の更新

ハイブリッド環境に AWS Systems Manager を使用して AWS 認証情報を管理する場合、Systems Manager はc:\Windows\System32\config\systemprofile\.aws\credentials。ハイブリッド環境用のSystems Manager の詳細については、「」を参照してください。ハイブリッド環境用の AWS Systems Manager のセットアップ()AWS Systems Manager ユーザーガイド

AWS .net SDK は新しい認証情報を自動的に取得しないため、ProfileRefreshingAWSCredentialProviderプラグインを使用して認証情報を更新します。

「」を使用できます。CredentialRef属性を使用して、すべての AWS 同期設定のCredentials定義ここで、CredentialType属性はに設定していますProfileRefreshingAWSCredentialProvider次の例に示すように、とします。

{ "Sinks": [{ "Id": "myCloudWatchLogsSink", "SinkType": "CloudWatchLogs", "CredentialRef": "ssmcred", "Region": "us-west-2", "LogGroup": "myLogGroup", "LogStream": "myLogStream" }], "Credentials": [{ "Id": "ssmcred", "CredentialType": "ProfileRefreshingAWSCredentialProvider", "Profile": "default", "FilePath": "%USERPROFILE%//.aws//credentials", "RefreshingInterval": 300 }] }

認証情報の定義は、以下の属性をキーと値のペアとして構成します。

Id

シンク定義が使用して指定できる文字列を定義しますCredentialRefを使用して、この資格情報構成を参照します。

CredentialType

リテラル文字列ProfileRefreshingAWSCredentialProvider

Profile

省略可能。デフォルト: default

FilePath

省略可能。AWS 認証情報ファイルのパスを指定します。省略すると、デフォルトの %USERPROFILE%/.aws/credentials が使用されます。

RefreshingInterval

省略可能。認証情報が更新される頻度(秒単位)。省略すると、デフォルトの 300 が使用されます。

シンクデコレーションの設定

シンク宣言には、ソースから収集されたレコードを拡張するためにさまざまな AWS サービスにストリーミングするための追加のデータを指定するキーと値のペアをオプションで含めることができます。

TextDecoration

シンク宣言で Format が指定されていない場合にこのキーと値のペアを使用します。この値は、変数の置換が発生する特殊な形式の文字列です。たとえば、シンクに対して "{ComputerName}:::{timestamp:yyyy-MM-dd HH:mm:ss}:::{_record}"TextDecoration が指定されているとします。ソースからテキスト The system has resumed from sleep. が含まれているログレコードが送信され、そのソースがパイプを介してシンクに接続されると、テキスト MyComputer1:::2017-10-26 06:14:22:::The system has resumed from sleep. が、シンクタイプに関連付けられている AWS サービスにストリーミングされます。{_record} 変数はソースによって配信される元のテキストレコードを参照します。

ObjectDecoration

シンク宣言で Format が指定されている場合にこのキーと値のペアを使用して、レコードシリアル化の前にデータを追加します。たとえば、JSON Format を指定するシンクに対して "ComputerName={ComputerName};DT={timestamp:yyyy-MM-dd HH:mm:ss}"ObjectDecoration が指定されているとします。その結果、シンクタイプに関連付けられている AWS サービスにストリーミングされた JSON にソースの元のデータに加え、以下のキーと値のペアが含まれます。

{ ComputerName: "MyComputer2", DT: "2017-10-17 21:09:04" }

ObjectDecoration の使用例については、「チュートリアル: Windows 用 Kinesis エージェントを使用して JSON ログファイルを Amazon S3 にストリーミング」を参照してください。

ObjectDecorationEx

より柔軟なデータ抽出と書式設定を可能にする式を指定します。ObjectDecoration。このフィールドは、シンクの形式がjson。式の構文を以下に示します。

"ObjectDecorationEx": "attribute1={expression1};attribute2={expression2};attribute3={expression3}(;...)"

たとえば、次のObjectDecorationEx属性:

"ObjectDecorationEx": "host={env:ComputerName};message={upper(_record)};time={format(_timestamp, 'yyyyMMdd')}"

リテラルレコードを変換します。

System log message

式によって返される値を使用して、次のように JSON オブジェクトを作成します。

{ "host": "EC2AMAZ-1234", "message": "SYSTEM LOG MESSAGE", "time": "20210201" }

式の式の作成の詳細については、「」を参照してください。式の記述に関するヒント。ほとんどのObjectDecoration宣言は、タイムスタンプ変数を除いて、新しい構文を使用して動作するはずです。A{timestamp:yyyyMMdd}のフィールドObjectDecorationと表されます。{format(_timestamp,'yyyyMMdd')}ObjectDecorationEx

TextDecorationEx

より柔軟なデータ抽出と書式設定を可能にする式を指定します。TextDecoration次の例に示すように、とします。

"TextDecorationEx": "Message '{lower(_record)}' at {format(_timestamp, 'yyyy-MM-dd')}"

「」を使用できます。TextDecorationExを使用して JSON オブジェクトを作成します。次の例に示すように、開いた中括弧をエスケープするには '@ {' を使用します。

"TextDecorationEx": "@{ \"var\": \"{upper($myvar1)}\" }"

シンクに接続されたソースのソースタイプが DirectorySource である場合、シンクでは次の追加の 3 つの変数を使用できます。

_FilePath

ログファイルの完全パス。

_FileName

ファイルのファイル名およびファイル名の拡張子。

_Position

レコードがログファイルのどこにあるかを表す整数。

これらの変数は、すべてのレコードを単一のストリームにストリーミングするシンクに接続された複数のファイルからログレコードを収集するソースを使用する場合に便利です。これらの変数の値をストリーミングレコードに挿入すると、データパイプラインのダウンストリーム分析でファイル別と各ファイルの場所別にレコードを並べ替えることができるようになります。

式の記述に関するヒント

式には、次のいずれかを指定できます。

  • 変数の式。

  • 定数式。たとえば、'hello',1,1.21,null,true,false

  • 次の例に示すように、関数を呼び出す呼び出し式。

    regexp_extract('Info: MID 118667291 ICID 197973259 RID 0 To: <jd@acme.com>', 'To: (\\\\S+)', 1)

特殊文字

特殊文字をエスケープするには、2 つのバックスラッシュが必要です。

Nesting

次の例に示すように、関数の呼び出しをネストすることができます。

format(date(2018, 11, 28), 'MMddyyyy')

Variables

変数には、ローカル、メタ、およびグローバルの 3 種類があります。

  • ローカル変数で始まります$など$message。これらは、イベントオブジェクトのプロパティ、イベントがディクショナリである場合はエントリ、イベントが JSON オブジェクトの場合は属性を解決するために使用されます。ローカル変数にスペースや特殊文字が含まれている場合は、引用符で囲まれたローカル変数 ($'date created'

  • メタ変数アンダースコア (_) であり、イベントのメタデータに解決するために使用されます。すべてのイベントタイプで、次のメタ変数がサポートされます。

    _timestamp

    イベントのタイムスタンプ。

    _record

    イベントの生のテキスト表現。

    ログイベントでは、次の追加のメタ変数がサポートされます。

    _filepath

    _filename

    _position

    _linenumber

  • グローバル変数は、環境変数、EC2 インスタンスメタデータ、または EC2Tag に解決されます。パフォーマンスを向上させるため、プレフィクスを使用して、検索範囲を制限することをお勧めします。{env:ComputerName},{ec2:InstanceId}, および{ec2tag:Name}

組み込み関数

Windows 用 Kinesis Agent でサポートされる組み込み関数は以下のとおりです。引数のいずれかがNULLを処理するように設計されていませんNULLNULLオブジェクトが返されます。

//string functions int length(string input) string lower(string input) string lpad(string input, int size, string padstring) string ltrim(string input) string rpad(string input, int size, string padstring) string rtrim(string input) string substr(string input, int start) string substr(string input, int start, int length) string trim(string input) string upper(string str) //regular expression functions string regexp_extract(string input, string pattern) string regexp_extract(string input, string pattern, int group) //date functions DateTime date(int year, int month, int day) DateTime date(int year, int month, int day, int hour, int minute, int second) DateTime date(int year, int month, int day, int hour, int minute, int second, int millisecond) //conversion functions int? parse_int(string input) decimal? parse_decimal(string input) DateTime? parse_date(string input, string format) string format(object o, string format) //coalesce functions object coalesce(object obj1, object obj2) object coalesce(object obj1, object obj2, object obj3) object coalesce(object obj1, object obj2, object obj3, object obj4) object coalesce(object obj1, object obj2, object obj3, object obj4, object obj5) object coalesce(object obj1, object obj2, object obj3, object obj4, object obj5, object obj6)

シンク変数の置換の設定

KinesisStreamKinesisFirehose、および CloudWatchLogs のシンク宣言では、LogStream または StreamName のキーと値のペアが必要です。これらのキー値の値には、Windows の Kinesis Agent によって自動的に解決される変数参照を含めることができます。を使用する場合CloudWatchLogsとすると、LogGroupキーと値のペアも必要です。このキーと値のペアには、Kinesis Agent for Windows によって自動的に解決される変数参照を含めることができます。変数は、テンプレート {prefix:variablename} を使用して指定します。ここで、prefix: はオプションです。サポートされているプレフィックスは次のとおりです。

  • env— 変数参照は同じ名前の環境変数の値に解決されます。

  • ec2— 変数参照は同じ名前の EC2 インスタンスメタデータに解決されます。

  • ec2tag— 変数参照は同じ名前の EC2 インスタンスタグの値に解決されます。インスタンスタグにアクセスするには、ec2:Describe* アクセス許可が必要です。詳細については、「EC2 タグ変数の展開に必要なアクセス許可」を参照してください。

プレフィックスが指定されていない場合に variablename と同じ名前の環境変数があると、変数参照は環境変数の値に解決されます。それ以外の場合で、variablenameinstance_id または hostname である場合、変数参照は同じ名前の EC2 メタデータの値に解決されます。それ以外の場合、変数参照は解決されません。

変数参照を使用した有効なキーと値のペアの例を次に示します。

"LogStream": "LogStream_{instance_id}" "LogStream": "LogStream_{hostname}" "LogStream": "LogStream_{ec2:local-hostname}" "LogStream": "LogStream_{computername}" "LogStream": "LogStream_{env:computername}"

CloudWatchLogs シンク宣言では、特殊な形式のタイムスタンプ変数をサポートしています。この変数により、ソースからの元のログレコードまたはイベントレコードのタイムスタンプでログストリームの名前の変更が可能になります。形式は次のとおりです。{timestamp:timeformat}次の例を参照してください。

"LogStream": "LogStream_{timestamp:yyyyMMdd}"

ログレコードまたはイベントレコードが 2017 年 6 月 5 日に生成された場合、前の例の LogStream のキーと値のペアの値は "LogStream_20170605" に解決されます。

承認されている場合、CloudWatchLogs シンクタイプは、必要に応じて生成された名前に基づいて新しいログストリームを自動的に作成できます。その他のシンクタイプでは、ストリームの名前以外の追加の設定が必要であるため、これを行うことはできません。

テキストおよびオブジェクトのデコレーションで発生する特殊な変数の置換があります。詳細については、「シンクデコレーションの設定」を参照してください。

シンクのキューイングの設定

KinesisStreamKinesisFirehose、および CloudWatchLogs のシンク宣言では、一時的な接続の問題が原因でそれらのシンクタイプに関連付けられている AWS サービスにストリーミングできなかったレコードのキューイングをオプションで有効にすることができます。接続が回復されたときにキューイングと自動ストリーミングの再試行を有効にするには、シンク宣言で次のキーと値のペアを使用します。

QueueType

使用するキューイングメカニズムの種類を指定します。サポートされている値は file だけです。これはレコードがファイルにキューイングされることを示します。Windows 用 Kinesis Agent for Windows のキューイング機能を有効にするには、このキーと値のペアが必要です。指定しない場合、デフォルトでは、メモリのみにキューイングして、メモリ内のキューイングの制限に達するとストリーミングに失敗します。

QueuePath

キュー内のレコードのファイルが格納されているフォルダのパスを指定します。このキーと値のペアはオプションです。デフォルト値は %PROGRAMDATA%\KinesisTap\Queue\SinkId です。ここで SinkId はシンク宣言で Id の値として割り当てた識別子です。

QueueMaxBatches

ストリーミング用にレコードをキューイングするときに Kinesis Agent for Windows で消費可能な容量の合計量を制限します。容量は、このキーと値のペアにバッチあたりの最大バイト数を乗算した値に制限されます。KinesisStreamKinesisFirehose、および CloudWatchLogs のシンクタイプのバッチあたりの最大バイト数はそれぞれ、5 MB、4 MB、および 1 MB です。この制限に達すると、ストリーミング障害はキューに入れられず、回復不可能な障害としてレポートされます。このキーと値のペアはオプションです。デフォルト値は 10,000 個のバッチです。

シンクのプロキシの設定

AWS サービスにアクセスするすべての Kinesis Agent for Windows シンクタイプでプロキシを設定するには、以下の場所にある Kinesis Agent for Windows 設定ファイルを編集します。%Program Files%\Amazon\KinesisTap\AWSKinesisTap.exe.config。手順については、以下を参照してください。proxyのセクションに追加します。AWS SDK for .NET の設定ファイルリファレンス().NET 用 AWS SDK 開発者ガイド

より多くのシンク属性での変数の解決の設定

以下の例では、使用するシンクの設定を示しています。Regionの値について、環境変数Region属性キーと値のペア。を使用する場合RoleARNでは、EC2 タグキーを指定します。MyRoleARNそのキーに関連付けられた値に評価されます。

"Id": "myCloudWatchLogsSink", "SinkType": "CloudWatchLogs", "LogGroup": "EC2Logs", "LogStream": "logs-{instance_id}" "Region": "{env:Region}" "RoleARN": "{ec2tag:MyRoleARN}"

AWS シンクで RoleARN プロパティを使用する場合の AWS STS リージョンエンドポイントの設定

この機能は、Amazon EC2 で KinesiStap を使用し、RoleARNプロパティを使用して、送信先の AWS サービスで認証する外部 IAM ロールを引き受けることができます。

設定によるUseSTSRegionalEndpointstrueでは、エージェントがリージョンのエンドポイントを使用するように指定できます (たとえば、https://sts.us-east-1.amazonaws.com) ではなく、グローバルエンドポイント (たとえば、https://sts.amazonaws.com). Regional STS エンドポイントを使用すると、オペレーションのラウンドトリップ待ち時間が短縮され、グローバルエンドポイントサービスの障害の影響が制限されます。

AWS シンク用の VPC エンドポイントの設定

シンク設定で VPC エンドポイントをCloudWatchLogs,CloudWatch,KinesisStreams, およびKinesisFirehoseシンクタイプ。VPC エンドポイントでは、AWS PrivateLink を使用する AWS のサービスや VPC エンドポイントサービスに VPC をプライベートに接続できます。インターネットゲートウェイ、NAT デバイス、VPN 接続、または AWS Direct Connect 接続は必要ありません。VPC のインスタンスは、サービスのリソースと通信するためにパブリック IP アドレスを必要としません。VPC と他のサービス間のトラフィックは、Amazon ネットワークを離れません。詳細については、「」を参照してください。VPC エンドポイント()Amazon VPC ユーザーガイド

VPC エンドポイントを指定するには、ServiceURL次の例に示すように、プロパティCloudWatchLogsシンク構成。の値を設定します。ServiceURLに表示される値にVPC エンドポイントの詳細Amazon VPC コンソールを使用して、タブに追加します。

{ "Id": "myCloudWatchLogsSink", "SinkType": "CloudWatchLogs", "LogGroup": "EC2Logs", "LogStream": "logs-{instance_id}", "ServiceURL":"https://vpce-ab1c234de56-ab7cdefg.logs.us-east-1.vpce.amazonaws.com" }

プロキシの代替手段の設定

この機能を使用すると、.NET ではなく AWS SDK に組み込まれているプロキシサポートを使用して、シンク設定でプロキシサーバーを設定できます。以前は、プロキシを使用するようにエージェントを設定する唯一の方法は、.NET のネイティブ機能を使用することでした。これにより、プロキシファイルで定義されたプロキシを介してすべての HTTP/S 要求が自動的にルーティングされます。

現在プロキシ・サーバでエージェントを使用している場合は、この方法を使用するために変更する必要はありません。

「」を使用できます。ProxyHostおよびProxyPortプロパティを使用して、次の例のように代替プロキシを設定します。

{ "Id": "myCloudWatchLogsSink", "SinkType": "CloudWatchLogs", "LogGroup": "EC2Logs", "LogStream": "logs-{instance_id}", "Region": "us-west-2", "ProxyHost": "myproxy.mydnsdomain.com", "ProxyPort": "8080" }