Amazon S3 から Simple Log Service (SLS) にログファイルをインポートして、クエリ、分析、処理を行います。SLS は、最大 5 GB までの個別の S3 オブジェクトのインポートをサポートしています。この制限は、圧縮ファイルの場合、展開後のファイルサイズに適用されます。
前提条件
ログファイルが Amazon S3 にアップロードされていること。
プロジェクトと Logstore が作成されていること。詳細については、「プロジェクトの管理」および「Logstore の作成」をご参照ください。
カスタム権限:
次の例に示すように、S3 リソースを管理する権限を付与するカスタムポリシーを作成します。詳細については、「AWS でのカスタム権限の作成」をご参照ください。
説明SLS にオブジェクトをインポートするには、S3 のカスタム権限を設定する必要があります。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::your_bucket_name", "arn:aws:s3:::your_bucket_name/*" ] } ] }Amazon Simple Queue Service (SQS) リソースを管理する権限を付与するカスタムポリシーを作成します。詳細については、「AWS でのカスタム権限の作成」をご参照ください。
説明これは、SQS を有効にする場合にのみ必要です。
{ "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "kms:Decrypt" ], "Resource": "*" }
データインポート構成の作成
Simple Log Service コンソールにログインします。
[データインポート] エリアの [データインポート] タブで、[S3 - データインポート] を選択します。
対象のプロジェクトとログストアを選択し、[次へ] をクリックします。
インポート設定を構成します。
[インポート設定] ステップでは、以下のパラメーターを設定します。
パラメーター
説明
ジョブ名
SLS タスクの一意の名前。
S3 リージョン
インポートするオブジェクトを格納するバケットが配置されているリージョン。
AWS AccessKey ID
AWS へのアクセスに使用する AccessKey ID。
重要ご利用の AccessKey に、対応する AWS リソースへのアクセス権限があることを確認してください。
AWS Secret AccessKey
AWS へのアクセスに使用する Secret AccessKey。
SQS キュー URL
SQS キューの識別子。詳細については、「キューとメッセージの識別子」をご参照ください。
重要この機能は、SQS を有効にした後にのみ有効になります。
ファイルパスプレフィックスフィルター
ファイルパスのプレフィックスで S3 オブジェクトをフィルタリングして、インポートするオブジェクトを特定します。たとえば、インポートするすべてのオブジェクトが `csv/` ディレクトリにある場合、プレフィックスを `csv/` に設定します。
このパラメーターを設定しない場合、S3 バケット全体が走査されます。
説明このパラメーターを設定してください。バケットに多数のオブジェクトが含まれている場合、バケット全体を走査すると非効率です。
ファイルパス正規表現フィルター
ファイルパスの正規表現で S3 オブジェクトをフィルタリングして、インポートするオブジェクトを特定します。パスを含む名前が正規表現に一致するオブジェクトのみがインポートされます。デフォルトでは、このパラメーターは空であり、フィルタリングは実行されません。
たとえば、S3 オブジェクトの名前が
testdata/csv/bill.csvの場合、正規表現を(testdata/csv/)(.*)に設定します。正規表現のデバッグ方法の詳細については、「正規表現のデバッグ」をご参照ください。
ファイル変更時間フィルター
変更時間で S3 オブジェクトをフィルタリングして、インポートするオブジェクトを特定します。
すべて:指定された条件を満たすすべての S3 オブジェクトをインポートするには、このオプションを選択します。
特定の時間から:ある時点以降に変更されたファイルをインポートするには、このオプションを選択します。
特定の時間範囲:特定の時間範囲内に変更されたファイルをインポートする場合は、このオプションを選択します。
データ形式
オブジェクトの解析形式。オプションは次のとおりです。
CSV:区切り文字で区切られたテキストファイル。先頭行をフィールド名として指定するか、手動でフィールド名を指定します。先頭行を除くすべての行は、ログフィールドの値として解析されます。
単一行 JSON:S3 ファイルが 1 行ずつ読み取られます。各行は JSON オブジェクトとして解析されます。JSON オブジェクトのフィールドはログフィールドになります。
単一行テキストログ:S3 ファイルの各行が 1 つのログとして解析されます。
複数行テキストログ:S3 オブジェクトの複数行が 1 つのログとして解析されます。ログの先頭行または最終行に一致する正規表現を指定します。
圧縮形式
インポートする S3 オブジェクトの圧縮形式。SLS はオブジェクトを展開し、指定された形式に基づいてデータを読み取ります。
エンコード形式
インポートする S3 オブジェクトのエンコード形式。UTF-8 と GBK のみがサポートされています。
新規ファイルチェックサイクル
S3 オブジェクトの指定されたディレクトリに新規オブジェクトが継続的に生成される場合は、必要に応じて [新規ファイルチェック周期] を設定します。このパラメーターを設定すると、データインポートジョブはバックグラウンドで継続的に実行され、定期的に新規オブジェクトを自動検出して読み取ります。システムにより、S3 オブジェクトのデータが SLS に繰り返し書き込まれないことが保証されます。
ターゲット S3 パスで新しいオブジェクトが生成されなくなった場合、オプションを [チェックしない] に設定します。インポートジョブは、指定された条件を満たすすべてのオブジェクトを読み取った後、自動的に終了します。
ログ時間設定
時間フィールド
[データ形式] を [CSV] または [単一行 JSON] に設定する場合は、時間フィールドを設定します。このフィールドは、ファイル内で時間を表す列の名前であり、ログが SLS にインポートされる際のタイムスタンプを指定するために使用されます。
時間を抽出するための正規表現
正規表現を使用してログから時間を抽出します。
たとえば、サンプルログが 127.0.0.1 - - [10/Sep/2018:12:36:49 0800] "GET /index.html HTTP/1.1" の場合、[時刻抽出正規表現] を
[0-9]{0,2}\/[0-9a-zA-Z]+\/[0-9:,]+に設定します。説明他のデータ形式の場合でも、正規表現を使用して時間フィールドの一部のみを抽出することもできます。
時間フィールド形式
時間フィールドの値を解析するための時間形式を指定します。
Java の SimpleDateFormat 構文に従う時間形式を指定します。例:
yyyy-MM-dd HH:mm:ss。構文の詳細については、「Class SimpleDateFormat」をご参照ください。一般的な時間形式の詳細については、「時間形式」をご参照ください。epoch、epochMillis、epochMicro、epochNano などの Epoch 形式がサポートされています。
タイムゾーン
時間フィールドのタイムゾーンを選択します。時間フィールド形式が Epoch タイプの場合、タイムゾーンを設定する必要はありません。
ログ時間の解析時に夏時間を考慮する必要がある場合は、UTC 形式を選択します。それ以外の場合は、GMT 形式を選択します。
説明デフォルトのタイムゾーンは UTC+08:00 です。
[データ形式] を [CSV] に設定した場合、次の表に示す追加のパラメーターを設定する必要があります。
CSV 固有のパラメーター
パラメーター
説明
区切り文字
ログの区切り文字を設定します。デフォルト値はカンマ (,) です。
見積もり
CSV 文字列に使用される引用符。
エスケープ文字
ログのエスケープ文字を設定します。デフォルト値はバックスラッシュ (\) です。
最大行数
[最初の行をフィールド名として使用] をオンにすると、CSV ファイルの最初の行がフィールド名として使用されます。
カスタムフィールド
[先頭行をフィールド名にする] をオフにすると、カスタムフィールド名を指定できます。複数のフィールド名は、カンマ (,) で区切ります。
スキップする行数
スキップするログ行の数を指定します。たとえば、これを 1 に設定すると、ログ収集は CSV ファイルの 2 行目から開始されます。
複数行テキストログ固有のパラメーター
パラメーター
説明
正規表現を照合する位置
正規表現が一致する位置を設定します。オプションは次のとおりです:
先頭行に一致する正規表現:このオプションを選択すると、指定した正規表現がログエントリの先頭行に一致するために使用されます。一致しない行は、指定した最大行数に達するまで、ログエントリの一部として収集されます。
最終行に一致する正規表現:正規表現を使用してログエントリの最終行に一致させます。一致しない行は、最大行数に達するまで、次のログエントリの一部と見なされます。
正規表現
ログの内容に基づいて正しい正規表現を設定します。
正規表現のデバッグ方法の詳細については、「正規表現のデバッグ」をご参照ください。
最大行数
単一のログエントリの最大行数。
[プレビュー] をクリックすると、インポート結果が表示されます。
情報を確認後、[次へ] をクリックします。
データをプレビューし、インデックスを設定し、[次へ] をクリックします。
デフォルトでは、SLS でフルテキストインデックスが有効になっています。また、収集されたログに基づいてフィールドインデックスを手動で作成するか、[インデックス自動生成] をクリックして SLS に自動的に生成させることもできます。詳細については、「インデックスの作成」をご参照ください。
重要ログのクエリと分析を行うには、フルテキストインデックスまたはフィールドインデックスのいずれかを有効にする必要があります。両方が有効になっている場合、フィールドインデックスが優先されます。
インポート構成の表示
インポート構成を作成した後、コンソールで構成とその統計レポートを表示します。
プロジェクトリストで、ターゲットプロジェクトをクリックします。
で、ターゲット Logstore を見つけ、 を選択し、構成名をクリックします。
データインポート構成の基本情報と統計レポートを表示します。
構成の変更、インポートの開始または停止、構成の削除も可能です。
警告削除操作は元に戻せません。操作は慎重に行ってください。
課金
SLS のインポート機能は無料です。ただし、この機能はサービスプロバイダーの API にアクセスする必要があり、トラフィック料金とリクエスト料金が発生します。料金モデルは以下のとおりで、最終的な料金はサービスプロバイダーからの請求書によって決定されます。

フィールド | 説明 |
| 1 日あたりの総データインポート量 (GB)。 |
| アウトバウンドインターネットトラフィックの GB あたりの料金。 |
| Putリクエスト 10,000件ごとの料金。 |
| 10,000 Get リクエストあたりの料金。 |
| 新規ファイルチェック間隔 (分)。 データインポート構成を作成する際に 新規ファイルチェックサイクル を設定できます。 |
| プレフィックスに基づいてバケット内にリスト可能なファイルの数。 |
よくある質問
問題 | 考えられる原因 | 解決策 |
プレビューにデータが表示されない。 | S3 にオブジェクトがない、オブジェクトにデータが含まれていない、またはフィルター条件を満たすオブジェクトがない。 |
|
データに文字化けが発生する。 | データ形式、圧縮形式、またはエンコード形式が正しく設定されていない。 | S3 オブジェクトのフォーマットを確認し、必要に応じてデータフォーマット、圧縮フォーマット、またはエンコーディングフォーマットの設定を変更します。 既存の文字化けしたデータを修正するには、新しいログストアと新しいインポート構成を作成する必要があります。 |
SLS のログ時間がデータ内の実際の時間と一致しない。 | インポート構成の作成時に、ログ時間フィールドが指定されていないか、時間形式またはタイムゾーンが正しく設定されていない。 | ログ時間フィールドを指定し、正しい時間フォーマットとタイムゾーンを設定します。詳細については、ログ時間の設定をご参照ください。 |
インポート後にデータをクエリまたは分析できない。 |
|
|
インポートされたログエントリの数が期待より少ない。 | 一部のオブジェクトに 3 MB を超える単一行のデータが含まれており、インポート中に破棄された。詳細については、「収集制限」をご参照ください。 | S3 オブジェクトにデータを書き込む際は、単一行のデータが 3 MB を超えないようにしてください。 |
オブジェクトの数と総データ量が大きいにもかかわらず、インポート速度が期待される最大 80 MB/s よりも遅い。 | Logstore のシャード数が少なすぎる。詳細については、「パフォーマンス制限」をご参照ください。 | Logstore のシャード数が少ない場合は、シャード数を 10 以上に増やしてからレイテンシーを確認します。詳細については、「シャードの管理」をご参照ください。 |
一部のオブジェクトがインポートされない。 | フィルター条件が正しく設定されていないか、一部の個々のオブジェクトのサイズが 5 GB を超えている。詳細については、「収集制限」をご参照ください。 |
|
複数行テキストログが正しく解析されない。 | 先頭行の正規表現または最終行の正規表現が正しく設定されていない。 | 先頭行の正規表現または最終行の正規表現の正しさを確認します。 |
新しいオブジェクトをインポートする際に高いレイテンシーが発生する。 | 既存のオブジェクトが多すぎる。つまり、ファイルパスプレフィックスフィルターに一致するオブジェクトが多すぎる。 | ファイルパスのプレフィックスフィルターに一致するオブジェクト数が多すぎる場合 (例:100 万件超)、より具体的なプレフィックスを設定し、複数のデータインポートタスクを作成することを推奨します。そうしないと、新しいファイルの発見効率が大幅に低下します。 |
エラー処理
エラー | 説明 |
ファイル読み取り失敗 | ファイルの読み取り時、ネットワークの異常やファイルの破損により不完全なファイルエラーが発生すると、インポートタスクは自動で再試行します。3 回再試行しても読み取りが失敗した場合、そのファイルはスキップされます。 再試行間隔は、新規ファイルチェック間隔と同じです。新規ファイルチェック間隔が「Never Check」に設定されている場合、再試行間隔は 5 分になります。 |
圧縮形式の解析エラー | ファイルの展開中に、無効な圧縮形式エラーが発生した場合、インポートタスクはファイルをスキップします。 |
データフォーマットの解析エラー | データの解析に失敗した場合、データインポートジョブは元のテキストコンテンツをログの content フィールドに保存します。 |
S3 バケットが存在しない | インポートタスクは定期的に再試行します。バケットが再作成されると、インポートタスクは自動的に再開されます。 |
権限エラー | S3 バケットからのデータ読み取り中または SLS Logstore へのデータ書き込み中に権限エラーが発生した場合、インポートタスクは定期的に再試行します。権限の問題が修正されると、インポートタスクは自動的に再開されます。 権限エラーが発生した場合、インポートタスクはどのファイルもスキップしません。そのため、権限の問題が修正された後、インポートタスクはバケット内の未処理のオブジェクトから SLS Logstore にデータを自動的にインポートします。 |