スケジュールされたクエリの作成 - Amazon CloudWatch Logs

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

スケジュールされたクエリの作成

CloudWatch Logs Insights クエリを自動的に実行し、選択した送信先に結果を配信するスケジュールされたクエリを作成します。

前提条件

スケジュールされたクエリを作成する前に、以下があることを確認してください。

  • ロググループ - 分析するデータを含む 1 つ以上のロググループ

  • 実行 IAM ロール - 次のアクセス許可を持つ IAM ロール。

    • logs:StartQuery - CloudWatch Logs Insights クエリを開始するアクセス許可

    • logs:GetQueryResults - クエリ結果を取得するアクセス許可

    • logs:DescribeLogGroups - ロググループ情報にアクセスするためのアクセス許可。これは、ロググループ検出のプレフィックスベースのロググループにのみ必要です。

  • 送信先アクセス許可 - 選択した送信先に対する追加の IAM アクセス許可:

    • Amazon S3 の送信先の場合: s3:PutObject

  • AWS CLI および API の使用 - CloudWatch Logs APIsを呼び出すアクセス許可を持つ AWS 認証情報を設定

IAM ポリシーの詳細な例については、「」を参照してくださいAmazon CloudWatch Logs の Identity and Access Management。また、アカウントごとにスケジュールされたクエリは 1,000 個のみです。

Console
スケジュールされたクエリを作成するには (コンソール)
  1. で CloudWatch Logs コンソールを開きます。 https://console.aws.amazon.com/cloudwatch/home#logsV2

  2. ナビゲーションペインで、Logs Insights を選択します。

  3. スケジュールされたクエリの作成を選択します。

  4. クエリ定義セクションで、次の操作を行います。

    1. クエリ言語 で、リストから使用するクエリ言語を選択します。

    2. クエリ文字列には、ボックスに CloudWatch Logs Insights クエリを入力します。

    3. ロググループで、リストからクエリするロググループを選択します。

  5. 「スケジュール設定」セクションで、次の操作を行います。

    1. スケジュール式では、クエリが実行されるタイミングを設定します。事前定義されたオプションから選択するか、カスタム cron 式を入力します。

    2. 「作成時に有効」で、スケジュールがいつアクティブになるかを指定します。すぐに開始するか、YYYY/MM/DD 形式を使用して特定の日時から開始するかを選択します。

    3. 時間範囲には、各クエリ実行のルックバック期間を指定します。クエリの実行時間からどれだけ前の時間かを定義する時間を分単位で入力します。

    4. 「無期限に続行する」で、スケジュールの終了時刻を指定します。無期限に実行するか、YYYY/MM/DD 形式を使用して特定の日時まで実行するかを選択します。

  6. コンソールには、設定に基づいて次の 3 つのスケジュールされたクエリ実行が表示され、クエリが実行される正確な日時が UTC で表示されます。

  7. 「クエリ結果を S3 に投稿する - オプション」セクション (S3 送信先を使用している場合):

    1. Amazon S3 URI の場合は、結果が保存される Amazon S3 バケットとプレフィックス (例: ) を入力しますs3://my-bucket/query-results/

    2. Amazon S3 の表示 を選択して、新しいタブで Amazon S3 コンソールを開き、バケット設定を確認します。

    3. Amazon S3 ブラウザを使用して既存の Amazon S3 の場所を選択するには、Amazon S3 を参照を選択します。

  8. Amazon Amazon S3ロールセクション:

    1. 「IAM ロールを選択する」で、必要なポリシーを持つ既存の IAM ロールを選択するか、IAM コンソールで新しいロールを作成して新しいロールを作成します。

    2. 検索フィールドを使用して、リストから適切な IAM ロールを検索して選択します。

  9. スケジュールされたクエリ実行の IAM ロールセクションで、次の操作を行います。

    1. 「IAM ロールを選択する」で、必要なポリシーを持つ既存の IAM ロールを選択するか、IAM コンソールで新しいロールを作成して新しいロールを作成します。

    2. 検索フィールドを使用して、リストから適切な IAM ロールを検索して選択します。

  10. スケジュールの作成を選択して、スケジュールされたクエリを作成します。

AWS CLI
スケジュールされたクエリを作成するには (AWS CLI)
  • create-scheduled-query コマンドを使用して、新しいスケジュールされたクエリを作成します。

    aws logs create-scheduled-query \ --name "ErrorAnalysisQuery" \ --query-language "CWLI" \ --query-string "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)" \ --schedule-expression "cron(8 * * * ? *)" \ --execution-role-arn "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole" \ --log-group-identifiers "/aws/lambda/my-function" "/aws/apigateway/my-api" \ --state "ENABLED"
API
スケジュールされたクエリを作成するには (API)
  • CreateScheduledQuery アクションを使用して、新しいスケジュールされたクエリを作成します。次の例では、1 時間ごとに実行されるスケジュールされたクエリを作成します。

    { "name": "ErrorAnalysisQuery", "queryLanguage": "CWLI", "queryString": "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)", "scheduleExpression": "cron(8 * * * ? *)", "executionRoleArn": "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole", "logGroupIdentifiers": ["/aws/lambda/my-function", "/aws/apigateway/my-api"], "state": "ENABLED" }

スケジュールされたクエリを作成したら、スケジュールされたクエリページから ListScheduledQueries API を使用してクエリを表示および管理できます。この API には、スケジュールされたすべてのクエリの名前、作成日、最終実行のステータス、最終トリガー時間、繰り返し頻度が表示されます。