AWS CLI を使用した CloudTrail Lake の管理 - AWS CloudTrail

AWS CLI を使用した CloudTrail Lake の管理

以下は、CloudTrail Lake でイベントデータストアとクエリを作成し、管理するためのサンプル AWS CLI コマンドです。

イベントデータストアを作成する

以下のサンプル AWS CLI コマンドは、すべての Amazon S3 データイベントを選択する my-event-data-store という名前のイベントデータストアを作成します。このイベントデータストアの保存期間は 90 日です。--name は必須ですが、その他のパラメータはオプションです。--retention-period に有効な値は、日数を表す 7 から 2555 の整数です。--retention-period を指定しない場合、CloudTrail はデフォルトの保存期間である 2555 日を使用します。デフォルトで、パラメータが追加されない場合でも --multi-region-enabled パラメータが設定され、イベントデータストアにはすべてのリージョンのイベントが含まれます。デフォルトで、イベントデータストアは AWS Organizations 組織内のすべてのアカウントに対して有効化されません。イベントデータストアが組織内のすべてのアカウントに関するイベントを収集できるようにするには、--organization-enabled パラメータを追加します。--termination-protection-enabled (デフォルト) と --no-termination-protection-enabled は、それぞれ終了保護を設定および削除します。--advanced-event-selectors は、イベントデータストア内のデータイベントを含める、または除外します。--advanced-event-selectors の詳細については、「CloudTrail API Reference」(CloudTrail API リファレンス) の「AdvancedEventSelectors」を参照してください。

高度なイベントセレクターを使用して S3 オブジェクトのデータイベントを選択する場合は、常に StartsWith オペレーターを使用してください。

aws cloudtrail create-event-data-store --name my-event-data-store --retention-period 90 --advanced-event-selectors '[ { "Name": "Select all S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "resources.ARN", "StartsWith": ["arn:aws:s3"] } ] } ]'

以下に、応答の例を示します。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE", "Name": "my-event-data-store", "Status": "CREATED", "AdvancedEventSelectors": [ { "Name": "Select all S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:aws:s3" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "RetentionPeriod": 90, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2021-12-09T22:19:39.417000-05:00", "UpdatedTimestamp": "2021-12-09T22:19:39.603000-05:00" }

イベントデータストアを取得する

以下の AWS CLI 例は、必須の --event-data-store パラメータによって指定されたイベントデータストアに関する情報を返します。このパラメータは、ARN または ARN の ID サフィックスを受け入れます。

aws cloudtrail get-event-data-store --event-data-store arn:aws:cloudtrail:us-east-1:12345678910:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE

以下に、応答の例を示します。作成時刻と最終更新時刻は timestamp 形式です。

{ "EventDataStoreARN": "arn:aws:cloudtrail:us-east-1:12345678910:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "my-event-data-store", "Status": "Enabled", "AdvancedEventSelectors": [ { "Name": "Select All S3 Data Events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "resources.ARN", "StartsWith": ["arn:aws:s3"] } ] } ] "CreatedTimestamp": 1248496624, "UpdatedTimestamp": 1598296624, "MultiRegionEnabled": true, "RetentionPeriod": 90, "TerminationProtectionEnabled": true, }

アカウント内のすべてのイベントデータストアをリストする

以下のサンプル AWS CLI コマンドは、現在のリージョン内のアカウントにあるすべてのイベントデータストアに関する情報を返します。オプションのパラメータには、コマンドが単一のページに返す結果の最大数を指定する --max-results が含まれます。指定した --max-results 値よりも多くの結果がある場合は、返された NextToken 値を追加してコマンドを再度実行し、結果の次のページを取得します。

aws cloudtrail list-event-data-stores

以下に、応答の例を示します。

{ "EventDataStores": [ { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE", "Name": "my-event-data-store" } ] }

イベントデータストアを更新する

以下の例は、イベントデータストアを更新して保存期間を 100 日に変更し、終了保護を有効にします。--event-data-store パラメータ値は ARN (または ARN の ID サフィックス) で、必須です。その他のパラメータはオプションです。この例では、保存期間を 100 日に変更するために --retention-period パラメータが追加され、終了保護が有効になっていなかったイベントデータストアで終了保護を有効にするために --termination-protection-enabled が追加されています。

aws cloudtrail update-event-data-store --event-data-store arn:aws:cloudtrail:us-east-1:12345678910:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE --retention-period 100 --termination-protection-enabled

以下に、応答の例を示します。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE", "Name": "my-event-data-store", "Status": "ENABLED", "AdvancedEventSelectors": [ { "Name": "Select all S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:aws:s3" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "RetentionPeriod": 100, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2021-12-09T22:19:39.417000-05:00", "UpdatedTimestamp": "2021-12-09T22:19:39.603000-05:00" }

イベントデータストアを削除する

以下のサンプル AWS CLI コマンドは、イベントデータストア ARN、または ARN の ID サフィックスを受け入れる --event-data-store によって指定されたイベントデータストアを無効にします。delete-event-data-store の実行後、イベントデータストアの最終状態が PENDING_DELETION になり、イベントデータストアは 7 日間の待機期間後に自動的に削除されます。イベントデータストアには --no-termination-protection-enabled が設定されている必要があります。--termination-protection-enabled が設定されている場合、この操作は機能しません。

イベントデータストアでの delete-event-data-store の実行後、無効化されたデータストアを使用しているクエリで list-queriesdescribe-query、または get-query-results を実行することはできません。イベントデータストアが削除保留中になっているときは、アカウントのイベントデータストア最大数 (5 個) に計上されません。

aws cloudtrail delete-event-data-store --event-data-store arn:aws:cloudtrail:us-east-1:12345678910:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE

コマンドが成功した場合、レスポンスはありません。

イベントデータストアを復元する

以下のサンプル AWS CLI コマンドは、削除保留中のイベントデータストアを復元します。イベントデータストアは、イベントデータストア ARN、または ARN の ID サフィックスを受け入れる --event-data-store によって指定されます。削除されたイベントデータストアを復元できるのは、削除後 7 日間の待機期間内のみです。

aws cloudtrail restore-event-data-store --event-data-store EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE

レスポンスには、ARN、高度なイベントセレクター、および復元のステータスなどのイベントデータストアに関する情報が含まれています。

クエリを開始する

次の例では、クエリステートメントで ID として指定されたイベントデータストアに対してクエリを実行し、指定された S3 バケットにクエリ結果を配信します。必須の --query-statement パラメータは、一重引用符で囲まれた SQL クエリを提供します。オプションのパラメータには、指定された S3 バケットにクエリ結果を配信するための --delivery-s3uri が含まれます。

aws cloudtrail start-query --query-statement 'SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10' --delivery-s3uri "s3://aws-cloudtrail-lake-query-results-12345678910-us-east-1"

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

出力

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

1 時間以上実行するクエリは、タイムアウトすることがあります。クエリがタイムアウトする前に、処理済みの部分的な結果を取得することはできます。

オプションの --delivery-s3uri パラメータを使用してクエリ結果を S3 バケットに配信する場合、バケットポリシーはクエリ結果をバケットに配信するアクセス権限を CloudTrail に付与する必要があります。バケットポリシーを手動で編集する方法については、CloudTrail Lake クエリ結果の Amazon S3 バケットポリシー を参照してください。

クエリに関するメタデータを取得する

次の例にある AWS CLI describe-query コマンドは、ミリ秒単位のクエリ実行時間、スキャン済みの一致したイベント数、スキャン済み合計バイト数、クエリのステータスなど、クエリに関するメタデータを取得します。BytesScanned 値は、クエリが実行中でない限り、ユーザーのアカウントがクエリに対して請求されるバイト数と一致します。

--event-data-store に ARN または ARN の ID サフィックスを指定し、--query-id に値を指定する必要があります。

aws cloudtrail describe-query --event-data-store EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE --query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE

以下に、応答の例を示します。

{ "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", "QueryString": "SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10", "QueryStatus": "RUNNING", "QueryStatistics": { "EventsMatched": 10, "EventsScanned": 1000, "BytesScanned": 35059, "ExecutionTimeInMillis": 3821, "CreationTime": "1598911142" } }

クエリ結果を取得する

以下のサンプル AWS CLI コマンドは、クエリのイベントデータ結果を取得します。--event-data-store に ARN または ARN の ID サフィックスを指定し、start-query によって返された QueryID を指定する必要があります。BytesScanned 値は、クエリが実行中でない限り、ユーザーのアカウントがクエリに対して請求されるバイト数と一致します。オプションのパラメータには、コマンドが単一のページに返す結果の最大数を指定する --max-query-results が含まれます。指定した --max-query-results 値よりも多くの結果がある場合は、返された NextToken 値を追加してコマンドを再度実行し、結果の次のページを取得します。

aws cloudtrail get-query-results --event-data-store EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE --query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE

出力

{ "QueryStatus": "RUNNING", "QueryStatistics": { "ResultsCount": 244, "TotalResultsCount": 1582, "BytesScanned":27044 }, "QueryResults": [ { "key": "eventName", "value": "StartQuery", } ], "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", "QueryString": "SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10", "NextToken": "20add42078135EXAMPLE" }

イベントデータストアに対するすべてのクエリをリストする

以下のサンプル AWS CLI コマンドは、指定されたイベントデータストアについて、過去 7 日間のクエリとクエリステータスのリストを返します。--event-data-store には、ARN、または ARN 値の ID サフィックスを指定する必要があります。オプションで、結果のリストを短くするために、--start-time--end-time パラメータ、および --query-status 値を追加することで、タイムスタンプとしてフォーマットされた時間範囲を指定できます。QueryStatus に有効な値には、QUEUEDRUNNINGFINISHEDFAILED、または CANCELLED が含まれます。

list-queries には、オプションのページ分割パラメータもあります。--max-results を使用して、コマンドが単一のページに返す結果の最大数を指定します。指定した --max-results 値よりも多くの結果がある場合は、返された NextToken 値を追加してコマンドを再度実行し、結果の次のページを取得します。

aws cloudtrail list-queries --event-data-store EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE --query-status CANCELLED --start-time 1598384589 --end-time 1598384602 --max-results 10

出力

{ "Queries": [ { "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", "QueryStatus": "CANCELLED", "CreationTime": 1598911142 }, { "QueryId": "EXAMPLE2-4e89-9230-2127-5dr3aEXAMPLE", "QueryStatus": "CANCELLED", "CreationTime": 1598296624" } ], "NextToken": "20add42078135EXAMPLE" }

実行中のクエリをキャンセルする

以下の例は、ステータスが RUNNING のクエリをキャンセルします。--event-data-store に ARN または ARN 値の ID サフィックスを指定し、--query-id に値を指定する必要があります。cancel-query を実行すると、cancel-query 操作がまだ終了していない場合でも、クエリのステータスに CANCELLED が表示されることがあります。

注記

キャンセルされたクエリには、料金が発生する可能性があります。アカウントには、クエリをキャンセルする前にスキャンされたデータ量に対する料金が請求されます。

以下は CLI の例です。

aws cloudtrail cancel-query --event-data-store EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE --query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE

出力

QueryId -> (string) QueryStatus -> (string)