

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

# 自然言語プロンプトから CloudTrail Lake クエリを作成する
<a name="lake-query-generator"></a>

CloudTrail Lake クエリジェネレーターを使用して、指定した英語プロンプトからクエリを生成することができます。クエリジェネレーターは、生成人工知能 (生成 AI) を使用してプロンプトからすぐに使用できる SQL クエリを生成します。このクエリに対して、Lake のクエリエディタで実行するか、さらに微調整するかを選択できます。クエリジェネレーターを使用するにあたり、SQL または CloudTrail イベントフィールドに関する広範な知識は必要ありません。

プロンプトは、CloudTrail Lake イベントデータストアのイベントデータに関する質問またはステートメントにすることができです。例えば、"What are my top errors in the past month?" や “Give me a list of users that used SNS.” などのプロンプトを入力できます

プロントの文字数は 3～500 文字です。

クエリの生成には料金はかかりませんが、クエリを実行すると、スキャンされる最適化および圧縮されたデータの量に基づいて料金が発生します。コストを抑えるため、クエリに開始および終了 `eventTime` タイムスタンプを追加してクエリを制限することをお勧めします。

**注記**  
生成されたクエリの下に表示される高評価または低評価ボタンを選択して、生成されたクエリに関するフィードバックを提供することができます。フィードバックを提供すると、CloudTrail はプロンプトと生成されたクエリを保存します。  
フィルターパターンには、個人を特定できる情報や機密情報を含めないでください。  
この機能は生成 AI 大規模言語モデル (LLM) を使用します。LLM レスポンスを再確認することをお勧めします。

**注記**  
CloudTrail は、クエリの生成中に推論リクエストを処理するために、地域内の最適なリージョンを自動的に選択します。これにより、利用可能なコンピューティングリソース、モデルの可用性を最大化し、最高のカスタマーエクスペリエンスを実現できます。データはリクエストが発生したリージョンにのみ保存されますが、入力プロンプトと出力結果はそのリージョン外で処理される場合があります。すべてのデータは Amazon の安全なネットワーク経由で暗号化されて送信されます。  
 CloudTrail は、次のように、推論リクエストを、リクエストが発生した地理的領域内の利用可能なコンピューティングリソースに安全にルーティングします。  
米国を起点とする推論リクエストは、米国内で処理されます。
日本国内からの推論リクエストは日本国内で処理されます
オーストラリアを起点とする推論リクエストは、オーストラリア内で処理されます。
欧州連合を起点とする推論リクエストは欧州連合内で処理されます
インドを起点とする推論リクエストはインド内で処理されます
 クエリ生成機能をオプトアウトするには、使用している iam ポリシーから`cloudtrail:GenerateQuery`アクションを明示的に拒否または削除できます。

CloudTrail コンソールと を使用してクエリジェネレーターにアクセスできます AWS CLI。

------
#### [ CloudTrail console ]

**CloudTrail コンソールでクエリジェネレーターを使用するには**

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

1.  ナビゲーションペインの **[Lake]** で、**[クエリ]** を選択します。

1. **[クエリ]** ページで、**[エディタ]** タブを選択します。

1. クエリを作成するイベントデータストアを選択します。

1. **[クエリジェネレーター]** エリアで、プロンプトを平易な英語で入力します。例については「[プロンプトの例](#lake-query-generator-examples)」を参照してください。

1. **[クエリの生成]** を選択します。クエリジェネレーターは、プロンプトからクエリを生成しようと試みます。成功すると、クエリジェネレーターがエディタに SQL クエリを表示します。プロンプトが失敗した場合は、プロンプトを言い換えて再試行してください。

1. (オプション) 生成されたクエリについてフィードバックを提供することができます。フィードバックを提供するには、プロンプトの下に表示される高評価ボタンまたは低評価ボタンを選択します。フィードバックを提供すると、CloudTrail はプロンプトと生成されたクエリを保存します。

1. (オプション) クエリを実行するには、**[実行]** を選択します。
**注記**  
クエリを実行すると、スキャンされる最適化および圧縮されたデータの量に基づいて料金が発生します。コストを抑えるため、クエリに開始および終了 `eventTime` タイムスタンプを追加してクエリを制限することをお勧めします。

1. (オプション) クエリを実行し、結果がある場合は、**[結果を要約]** を選択して、クエリ結果の自然言語の概要を英語で生成できます。このオプションでは、生成型人工知能 (生成 AI) を使用して概要を作成します。このオプションの詳細については、「[クエリ結果を自然言語で要約する](query-results-summary.md)」を参照してください。

   生成された概要の下に表示されるサムズアップボタンまたはサムズダウンボタンを選択して、概要に関するフィードバックを提供できます。
**注記**  
クエリ要約機能は CloudTrail Lake のプレビューリリースであり、変更される可能性があります。この機能は、次のリージョンで利用できます: アジアパシフィック (東京)、米国東部 (バージニア北部)、米国西部 (オレゴン)。

------
#### [ AWS CLI ]

**を使用してクエリを生成するには AWS CLI**

`generate-query` コマンドを実行して、英語のプロンプトからクエリを生成します。`--event-data-stores` には、クエリを行うイベントデータストア ARN (または ARN の ID サフィックス) を指定します。指定できるイベントデータストアは 1 つだけです。`--prompt` の場合、プロンプトを英語で指定します。

```
aws cloudtrail generate-query 
--event-data-stores arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE \
--prompt "Show me all console login events for the past week?"
```

成功すると、コマンドは SQL ステートメントを出力し、イベントデータストアに対してクエリを実行するために `start-query` コマンドで使用する `QueryAlias` を提供します。

```
{
  "QueryStatement": "SELECT * FROM $EDS_ID WHERE eventname = 'ConsoleLogin' AND eventtime >= timestamp '2024-09-16 00:00:00' AND eventtime <= timestamp '2024-09-23 00:00:00' AND eventSource = 'signin.amazonaws.com'",
  "QueryAlias": "AWSCloudTrail-UUID"
}
```

**を使用してクエリを実行するには AWS CLI**

前の例の `generate-query` コマンドによって出力された `QueryAlias` を使用して `start-query` コマンドを実行します。また、`QueryStatement` を指定して `start-query` コマンドを実行するオプションもあります。

```
aws cloudtrail start-query --query-alias {{AWSCloudTrail-UUID}}
```

レスポンスは `QueryId` 文字列です。クエリのステータスを取得するには、`start-query` によって返された `QueryId` 値を使用して `describe-query` を実行します。クエリが成功した場合は、`get-query-results` を実行して結果を取得できます。

```
{
    "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE"
}
```

**注記**  
1 時間以上実行するクエリは、タイムアウトすることがあります。クエリがタイムアウトする前に、処理済みの部分的な結果を取得することはできます。  
オプションの `--delivery-s3uri` パラメータを使用してクエリ結果を S3 バケットに配信する場合、バケットポリシーはクエリ結果をバケットに配信するアクセス権限を CloudTrail に付与する必要があります。バケットポリシーを手動で編集する方法については、[CloudTrail Lake クエリ結果の Amazon S3 バケットポリシー](s3-bucket-policy-lake-query-results.md) を参照してください。

------

## 必要なアクセス許可
<a name="lake-query-generator-permissions."></a>

[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html) と [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html) の両方の管理ポリシーは、この機能を使用するために必要なアクセス許可を提供します。

また、新規または既存のカスタマー管理ポリシーまたはインラインポリシーに `cloudtrail:GenerateQuery` アクションを含めることもできます。

## リージョンのサポート
<a name="lake-query-generator-regions"></a>

この機能は、以下でサポートされています AWS リージョン。
+ アジアパシフィック (ムンバイ) リージョン (ap-south-1)
+ アジアパシフィック (シドニー) リージョン (ap-southeast-2)
+ アジアパシフィック (東京) リージョン (ap-northeast-1)
+ カナダ (中部) リージョン (ca-central-1)
+ 欧州 (ロンドン) リージョン (eu-west-2)
+ 米国東部 (バージニア北部) リージョン (us-east-1)
+ 米国西部 (オレゴン) リージョン (us-west-2)

## 制限事項
<a name="lake-query-generator-limitations"></a>

クエリジェネレーターの制限事項は次のとおりです。
+ クエリジェネレーターは、英語のプロンプトのみを認識することができます。
+ クエリジェネレーターは、CloudTrail イベント (管理イベント、データイベント、ネットワークアクティビティイベント) を収集するイベントデータストアに対してのみクエリを生成できます。
+ クエリジェネレーターは、CloudTrail Lake イベントデータに関連しないプロンプトに対してクエリを生成することはできません。

## プロンプトの例
<a name="lake-query-generator-examples"></a>

このセクションでは、プロンプトの例と、そのプロンプトから生成される SQL クエリを提供します。

このセクションで例のクエリを実行する場合は、{{eds-id}} をクエリするイベントデータストアの ID に置き換え、タイムスタンプをユースケースに適したタイムスタンプに置き換えてください。タイムスタンプの形式: `YYYY-MM-DD HH:MM:SS`。

**プロンプト**: What are my top errors in the past month?

**SQL クエリ: **

```
SELECT
    errorMessage,
    COUNT(*) as eventCount
FROM
    {{eds-id}}
WHERE
    errorMessage IS NOT NULL
AND eventTime >= timestamp '{{2024-05-01 00:00:00}}'
AND eventTime <= timestamp '{{2024-05-31 23:59:59}}'
GROUP BY 1
ORDER BY 2 DESC
LIMIT 2;
```

**プロンプト**: Give me a list of users that used Amazon SNS.

**SQL クエリ: **

```
SELECT
    DISTINCT userIdentity.arn AS user
FROM
    {{eds-id}}
WHERE
    eventSource = 'sns.amazonaws.com'
```

**プロンプト**: What are my API counts each day for read and write events in the past month?

**SQL クエリ: **

```
SELECT date(eventTime) AS event_date,
    SUM(
        CASE
            WHEN readonly = true THEN 1
            ELSE 0
        END
    ) AS read_events,
    SUM(
        CASE
            WHEN readonly = false THEN 1
            ELSE 0
        END
    ) AS write_events
FROM
    {{eds-id}}
WHERE
    eventTime >= timestamp '{{2024-05-04 00:00:00}}'
AND eventTime <= timestamp '{{2024-06-04 23:59:59}}'
GROUP BY 1
ORDER BY 1 ASC;
```

**プロンプト**: Show any events with access denied errors for the past three weeks.

**SQL クエリ: **

```
SELECT *
FROM 
  {{eds-id}}
WHERE
  WHERE (errorCode = 'AccessDenied' OR errorMessage = 'Access Denied')
AND eventTime >= timestamp '{{2024-05-16 01:00:00}}'
AND eventTime <= timestamp '{{2024-06-06 01:00:00}}'
```

**プロンプト**: Query the number of calls each operator performed on the date *2024-05-01*. The operator is a principal tag.

**SQL クエリ: **

```
SELECT element_at(
        eventContext.tagContext.principalTags,
        'operator'
    ) AS operator,
    COUNT(*) AS eventCount
FROM
    {{eds-id}}
WHERE eventtime >= '2024-05-01 00:00:00'
    AND eventtime < '2024-05-01 23:59:59'
GROUP BY 1
ORDER BY 2 DESC;
```

**プロンプト**: Give me all event IDs that touched resources within the CloudFormation stack with name *myStack* on the date *2024-05-01*.

**SQL クエリ: **

```
SELECT eventID
FROM
    {{eds-id}}
WHERE any_match(
        eventContext.tagcontext.resourcetags,
        rt->element_at(rt.tags, 'aws:cloudformation:stack-name') = 'myStack'
    )
    AND eventtime >= '2024-05-01 00:00:00'
    AND eventtime < '2024-05-01 23:59:59'
```

**プロンプト**: Count the number of events grouped by resource tag '*solution*' values, listing them in descending order of count.

**SQL クエリ: **

```
SELECT element_at(rt.tags, 'solution'),
    count(*) as event_count
FROM
    {{eds-id}},
    unnest(eventContext.tagContext.resourceTags) as rt
WHERE eventtime < '2025-05-14 19:00:00'
GROUP BY 1
ORDER BY 2 DESC;
```

**プロンプト**: Find all Amazon S3 data events where resource tag Environment has value *prod*.

**SQL クエリ: **

```
SELECT *
FROM
    {{eds-id}}
WHERE eventCategory = 'Data'
    AND eventSource = 's3.amazonaws.com'
    AND eventtime >= '2025-05-14 00:00:00'
    AND eventtime < '2025-05-14 20:00:00'
    AND any_match(
        eventContext.tagContext.resourceTags,
        rt->element_at(rt.tags, 'Environment') = 'prod'
    )
```