

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

# CloudWatch Logs を Firehose に送信する
<a name="writing-with-cloudwatch-logs"></a>

CloudWatch Logs イベントは、CloudWatch サブスクリプションフィルターを使用して Firehose に送信できます。詳細については、「[Subscription filters with Amazon Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#FirehoseExample)」を参照してください。

CloudWatch Logs イベントは、圧縮 gzip 形式で Firehose に送信されます。解凍されたログイベントを Firehose の宛先に配信する場合は、Firehose の解凍機能を使用して CloudWatch Logs を自動的に解凍できます。

**重要**  
Firehose は現在、Amazon OpenSearch Service の宛先への CloudWatch Logs の配信をサポートしていません。Amazon CloudWatch が複数のログイベントを 1 つの Firehose レコードにまとめても、Amazon OpenSearch Service は 1 つのレコードで複数のログイベントを受け入れることができないためです。代わりの方法として、[CloudWatch Logs で Amazon OpenSearch Service のサブスクリプションフィルターを使用する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_OpenSearch_Stream.html)こともできます。

# CloudWatch Logs を解凍する
<a name="writing-with-cloudwatch-logs-decompression"></a>

Firehose を使用して CloudWatch Logs を配信し、解凍されたデータを Firehose ストリームの宛先に配信する場合は、Firehose の[データ形式転換](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html) (Parquet、ORC) または[動的パーティショニング](https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html)を使用します。Firehose ストリームのために解凍を有効にする必要があります。

解凍を有効にするには AWS マネジメントコンソール、、、 AWS Command Line Interface または AWS SDKsを使用します。

**注記**  
ストリームで解凍機能を有効にする場合は、そのストリームを CloudWatch Logs サブスクリプションフィルターにのみ使用し、Vended Logs には使用しません。CloudWatch Logs と Vended Logs の両方を取り込むために使用されるストリームで解凍機能を有効にした場合、Firehose への Vended Logs の取り込みは失敗します。この解凍機能は CloudWatch Logs 専用です。

# CloudWatch Logs の解凍後にメッセージを抽出する
<a name="Message_extraction"></a>

解凍を有効にすると、メッセージ抽出も有効にするオプションを使用できます。メッセージ抽出を使用する場合、Firehose は、解凍された CloudWatch Logs レコードから所有者、ロググループ、ログストリームなど、すべてのメタデータを除外し、メッセージフィールド内のコンテンツのみを配信します。データを Splunk の宛先に配信する場合は、Splunk がデータを解析できるように、メッセージ抽出をオンにする必要があります。解凍後の出力例を次に示します (メッセージ抽出あり/なし)。

図 1: メッセージ抽出なしの解凍後の出力例:

```
{
 "owner": "111111111111",
 "logGroup": "CloudTrail/logs",
 "logStream": "111111111111_CloudTrail/logs_us-east-1",
 "subscriptionFilters": [
 "Destination"
 ],
 "messageType": "DATA_MESSAGE",
 "logEvents": [
 {
 "id": "31953106606966983378809025079804211143289615424298221568",
 "timestamp": 1432826855000,
 "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root1\"}"
 },
 {
 "id": "31953106606966983378809025079804211143289615424298221569",
 "timestamp": 1432826855000,
 "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root2\"}"
 },
 {
 "id": "31953106606966983378809025079804211143289615424298221570",
 "timestamp": 1432826855000,
 "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root3\"}"
 }
 ]
}
```

図 2: メッセージ抽出ありの解凍後の出力例:

```
{"eventVersion":"1.03","userIdentity":{"type":"Root1"}
{"eventVersion":"1.03","userIdentity":{"type":"Root2"}
{"eventVersion":"1.03","userIdentity":{"type":"Root3"}
```

# コンソールから新しい Firehose ストリームでの解凍を有効にする
<a name="writing-with-cloudwatch-logs-decompression-enabling-console"></a>

**を使用して新しい Firehose ストリームで解凍を有効にするには AWS マネジメントコンソール**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis) で Kinesis コンソールを開きます。

1. ナビゲーションペインで **[Amazon Data Firehose]** を選択します。

1. **[Firehose ストリームを作成]** を選択します。

1. **[ソースと送信先を選択]** で次のように操作します。  
****ソース****  
Firehose ストリームのソース。次のソースのいずれかを選択します:  
   + **Direct PUT** – プロデューサーアプリケーションが直接書き込む Firehose ストリームを作成するときは、こちらを選択します。Firehose で Direct PUT と統合される AWS サービス、エージェント、オープンソースサービスのリストについては、[こちら](create-name.md)のセクションを参照してください。
   + **Kinesis ストリーム:** Kinesis データストリームをデータソースとして使用する Firehose ストリームを設定するには、このオプションを選択します。これで、Firehose を使用して、既存の Kinesis データストリームからデータを簡単に読み取り、宛先にロードすることができるようになります。詳細については、「[Writing to Firehose Using Kinesis Data Streams](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-kinesis-streams.html)」を参照してください。  
****送信先****  
Firehose ストリームの宛先。次のいずれかを選択します。  
   + Amazon S3
   + Splunk

1. **[Firehose ストリーム名]** で、ストリームの名前を入力します。

1. (オプション) **[レコードを変換]** で次のように操作します。
   + **[Amazon CloudWatch Logs からソースレコードを解凍]** セクションで、**[解凍をオンにする]** を選択します。
   + 解凍後にメッセージ抽出を使用する場合は、**[メッセージ抽出をオンにする]** を選択します。

# 既存の Firehose ストリームでの解凍を有効にする
<a name="enabling-decompression-existing-stream-console"></a>

このセクションでは、既存の Firehose ストリームで解凍を有効にする手順について説明します。Lambda 処理が無効になっているストリームと、Lambda 処理がすでに有効になっているストリームの 2 つのシナリオについて説明します。以下のセクションでは、Lambda 関数の作成または変更、Firehose 設定の更新、組み込みの Firehose 解凍機能を正常に実装するための CloudWatch メトリクスのモニタリングなど、ケース別に手順をステップごとに説明します。

## Lambda 処理が無効になっている場合の解凍の有効化
<a name="enabling-decomp-exist-stream-lam-disable"></a>

Lambda 処理が無効になっている既存の Firehose ストリームで解凍を有効にするには、まず Lambda 処理を有効にする必要があります。この条件は、既存のストリームに対してのみ有効です。次の手順は、Lambda 処理が有効になっていない既存のストリームで解凍を有効にする方法を示しています。

1. Lambda 関数を作成する。ダミーレコードのパススルーを作成することも、この[ブループリント](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor)を使用して新しい Lambda 関数を作成することもできます。

1. 現在の Firehose ストリームを更新して Lambda 処理を有効にし、処理用に作成した Lambda 関数を使用します。

1. 新しい Lambda 関数でストリームを更新したら、Firehose コンソールに戻り、解凍を有効にします。

1. ステップ 1 で有効にした Lambda 処理を無効にします。これで、ステップ 1 で作成した関数を削除できます。

## Lambda 処理が有効になっている場合の解凍の有効化
<a name="enabling-decomp-exist-stream-lam-enable"></a>

Lambda 関数を含む Firehose ストリームがすでにある場合、その関数を Firehose の解凍機能に置き換えると解凍を実行できます。続行する前に、Lambda 関数コードが解凍またはメッセージ抽出のみを実行するようになっていることを確認します。Lambda 関数の出力は、[図 1 または図 2](Message_extraction.md) に示す例に類似しているはずです。出力が類似している場合は、次のステップを実行して Lambda 関数を置き換えることができます。

1. 現在の Lambda 関数を、この[ブループリント](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor) に置き換えます。新しいブループリント Lambda 関数は、着信データが圧縮されているか、解凍されているかを自動的に検出します。入力データが圧縮されている場合にのみ、解凍が実行されます。

1. 解凍のために、組み込み Firehose オプションを使用して解凍をオンにします。

1. Firehose ストリームのために CloudWatch メトリクスを有効にします (まだ有効になっていない場合)。メトリクス `CloudWatchProcessorLambda_IncomingCompressedData` をモニタリングし、このメトリクスがゼロに変わるまで待機します。これにより、Lambda 関数に送信された入力データがすべて解凍され、Lambda 関数が不要になります。

1. ストリームを解凍する必要がなくなったため、Lambda データ変換を削除します。

# Firehose ストリームでの解凍を無効にする
<a name="writing-with-cloudwatch-logs-decompression-disabling-console"></a>

****

を使用してデータストリームの解凍を無効にするには AWS マネジメントコンソール

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis) で Kinesis コンソールを開きます。

1. ナビゲーションペインで **[Amazon Data Firehose]** を選択します。

1. 編集する Firehose ストリームを選択します。

1. **[Firehose ストリームの詳細]** ページで、**[設定]** タブを選択します。

1. **[レコードを変換および転換]** セクションで、**[編集]** を選択します。

1. **[Amazon CloudWatch Logs からソースレコードを解凍]** で、**[解凍をオンにする]** をクリアし、**[変更を保存]** を選択します。

# Firehose での解凍をトラブルシューティングする
<a name="decomp-faq"></a>

次の表は、Firehose がデータの解凍および処理中にエラーを処理する方法を示しています。これには、エラー S3 バケットへのレコードの配信、エラーのログ記録、メトリクスの出力が含まれます。また、不正なデータプットオペレーションについて返されるエラーメッセージに関しても説明します。


| 問題 | ソリューション | 
| --- | --- | 
| 解凍中にエラーが発生した場合、ソースデータはどうなりますか? |  Amazon Data Firehose がレコードを解凍できない場合、レコードはそのまま (圧縮形式で) Firehose ストリームの作成時に指定したエラー S3 バケットに配信されます。レコードとともに、配信されるオブジェクトにはエラーコードとエラーメッセージも含まれ、これらのオブジェクトは `decompression-failed` という S3 バケットプレフィックスに配信されます。Firehose は、レコードの解凍に失敗した後も、他のレコードの処理を継続します。  | 
| 解凍が成功した後に処理パイプラインにエラーが発生した場合、ソースデータはどうなりますか? |  動的パーティショニングやデータ形式転換などの解凍後に、処理ステップにおいて Amazon Data Firehose でエラーが発生した場合、レコードは、Firehose ストリームの作成時に指定したエラー S3 バケットに圧縮形式で配信されます。レコードとともに、配信されるオブジェクトにはエラーコードとエラーメッセージも含まれます。  | 
| エラーや例外が発生した場合はどのように通知されますか? |  解凍中にエラーまたは例外が発生した場合、CloudWatch Logs を設定すると、Firehose は、エラーメッセージを CloudWatch Logs にログ記録します。さらに、Firehose は、モニタリングできる CloudWatch メトリクスにメトリクスを送信します。また、オプションで、Firehose によって発行されたメトリクスに基づいてアラームを作成することもできます。  | 
| put オペレーションが CloudWatch Logs から取得されない場合はどうなりますか? | お客様の puts が CloudWatch Logs からのものではない場合、次のエラーメッセージが返されます: <pre>Put to Firehose failed for AccountId: <accountID>, FirehoseName:  <firehosename> because the request is not originating from allowed source types.</pre> | 
| Firehose は解凍機能についてどのようなメトリクスを出力しますか? | Firehose は、あらゆるレコードの解凍についてメトリクスを出力します。DecompressedRecords の失敗もしくは成功、または DecompressedBytes の失敗もしくは成功の数を取得するために、期間 (1 分)、統計 (合計)、日付範囲を選択する必要があります。詳細については、「[CloudWatch Logs の解凍メトリクス](monitoring-with-cloudwatch-metrics.md#decompression-metrics-cw)」を参照してください。 | 