AWS CloudTrail ソースからのデータレイクの作成 - AWS Lake Formation

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

AWS CloudTrail ソースからのデータレイクの作成

このチュートリアルでは、AWS CloudTrail ソースから最初のデータレイクを作成してロードするために、Lake Formation コンソールで実行するアクションについて詳しく説明します。

データレイクを作成するための大まかなステップ
  1. Amazon Simple Storage Service (Amazon S3) パスをデータレイクとして登録します。

  2. Lake Formation に、Data Catalog、およびデータレイク内の Amazon S3 ロケーションに書き込みを行うための許可を付与します。

  3. Data Catalog 内のメタデータテーブルを整理するためのデータベースを作成します。

  4. ブループリントを使用してワークフローを作成します。ワークフローを実行して、データソースからデータを取り込みます。

  5. 他のユーザーが Data Catalog とデータレイク内のデータを管理できるようにする Lake Formation 許可を設定します。

  6. Amazon S3 データレイクにインポートしたデータをクエリするように Amazon Athena をセットアップします。

  7. 一部のデータストアタイプについては、Amazon S3 データレイクにインポートしたデータをクエリするように Amazon Redshift Spectrum をセットアップします。

対象者

次の表は、このチュートリアルでデータレイクを作成するために使用しているロールのリストです。

対象者
ロール 説明
IAM 管理者 AWS マネージドポリシーをを持っています: AdministratorAccess。IAM ロールと Amazon S3 バケットを作成できます。
データレイク管理者 Data Catalog へのアクセス、データベースの作成、および他のユーザーへの Lake Formation 許可の付与を実行できるユーザー。IAM 許可の数は IAM 管理者よりも少ないですが、データレイクを管理するには十分な許可を持っています。
データアナリスト データレイクに対してクエリを実行できるユーザー。クエリを実行するために十分な許可のみを持っています。
ワークフローロール ワークフローを実行するために必要な IAM ポリシーを持つロール。詳細については、「(オプション) ワークフロー用の IAM ロールを作成する」を参照してください。

前提条件

開始する前に、以下を確認してください。

  • セットアップ AWS Lake Formation」のタスクを完了していること。

  • CloudTrail ログのロケーションを把握していること。

  • Athena では、データアナリストペルソナが Athena を使用する前に、クエリ結果を保存するための Amazon S3 バケットを作成する必要があります。

AWS Identity and Access Management (IAM) に精通していることが前提となっています。IAM については、「IAM ユーザーガイド」を参照してください。

ステップ 1: データアナリストユーザーの作成

このユーザーは、データレイクをクエリするための最小限の許可セットを持っています。

  1. IAM コンソール (https://console.aws.amazon.com/iam) を開きます。管理アクセスを持つユーザーを作成する で作成した管理者ユーザー、または AdministratorAccess AWS マネージドポリシーを持つユーザーとしてサインインします。

  2. 以下の設定で、datalake_user という名前のユーザーを作成します。

    • AWS Management Consoleへのアクセスを有効にする。

    • パスワードを設定して、パスワードのリセットを不要にする。

    • AmazonAthenaFullAccess AWS マネージドポリシーをアタッチする。

    • 以下のインラインポリシーをアタッチする。ポリシーには DatalakeUserBasic という名前を付けます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetTable", "glue:GetTables", "glue:SearchTables", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartitions", "lakeformation:GetResourceLFTags", "lakeformation:ListLFTags", "lakeformation:GetLFTag", "lakeformation:SearchTablesByLFTags", "lakeformation:SearchDatabasesByLFTags" ], "Resource": "*" } ] }

ステップ 2: ワークフローロールに AWS CloudTrail ログを読み取る許可を追加する

  1. 以下のインラインポリシーを LakeFormationWorkflowRole ロールにアタッチします。このポリシーは、AWS CloudTrail ログの読み取る許可を付与します。ポリシーには DatalakeGetCloudTrail という名前を付けます。

    LakeFormationWorkflowRole ロールを作成するには、「(オプション) ワークフロー用の IAM ロールを作成する」を参照してください。

    重要

    <your-s3-cloudtrail-bucket> は、CloudTrail データの Amazon S3 ロケーションに置き換えてください。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": ["arn:aws:s3:::<your-s3-cloudtrail-bucket>/*"] } ] }
  2. ロールに 3 つのポリシーがアタッチされていることを確認します。

ステップ 3: データレイクとしての Amazon S3 バケットを作成する

データレイクのルートロケーションになる Amazon S3 バケットを作成します。

  1. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開き、管理アクセスを持つユーザーを作成する で作成した管理者ユーザーとしてサインインします。

  2. [Create bucket] (バケットを作成) を選択し、ウィザードをすべて実行して <yourName>-datalake-cloudtrail という名前のバケットを作成します。<yourName> はユーザーの名前のイニシャルと苗字の組み合わせです。例: jdoe-datalake-cloudtrail

    Amazon S3 バケットの詳しい作成手順については、「バケットの作成」を参照してください。

ステップ 4: Amazon S3 パスを登録する

Amazon S3 パスをデータレイクのルートロケーションとして登録します。

  1. Lake Formation コンソール (‭‬https://console.aws.amazon.com/lakeformation/‬) を開きます。データレイク管理者としてサインインします。

  2. ナビゲーションペインの [Register and ingest] (登録および取り込み) で [Data lake locations] (データレイクのロケーション) を選択します。

  3. [Register location] (ロケーションを登録) を選択してから、[Browse] (参照) を選択します。

  4. 前に作成した <yourName>-datalake-cloudtrail バケットを選択し、デフォルトの IAM ロール AWSServiceRoleForLakeFormationDataAccess を受け入れ、[Register location] (ロケーションを登録) を選択します。

    ロケーションの登録に関する詳細については、「データレイクへの Amazon S3 ロケーションの追加」を参照してください。

ステップ 5: データのロケーションの許可を付与する

プリンシパルは、作成する Data Catalog のテーブルまたはデータベースのポイント先となるデータレイクロケーションに対するデータロケーション許可を持っている必要があります。ワークフローの IAM ロールにデータロケーション許可を付与して、ワークフローがデータ取り込み先に書き込みを実行できるようにする必要があります。

  1. ナビゲーションペインの [Permissions] (許可) で [Data locations] (データのロケーション) を選択します。

  2. [Grant] (付与) を選択し、[Grant permissions] (許可の付与) ダイアログボックスで、以下の選択を行います。

    1. [IAM user and roles] (IAM ユーザーおよびロール) で、LakeFormationWorkflowRole を選択します。

    2. [Storage locations] (ストレージのロケーション) で、使用する <yourName>-datalake-cloudtrail バケットを選択します。

  3. [Grant] (付与) を選択します。

データロケーション許可については、「Underlying data access control」を参照してください。

ステップ 6: Data Catalog でデータベースを作成する

Lake Formation Data Catalog のメタデータテーブルは、データベース内に保存されます。

  1. ナビゲーションペインの [Data catalog][Databases] (データベース) を選択します。

  2. [Create database] (データベースを作成) を選択し、[Database details] (データベースの詳細) で lakeformation_cloudtrail という名前を入力します。

  3. 他のフィールドは空欄のままにしておき、[Create database] (データベースを作成) を選択します。

ステップ 7: データの許可を付与する

Data Catalog でメタデータテーブルを作成するための許可を付与する必要があります。ワークフローは LakeFormationWorkflowRole ロールを使用して実行されるため、これらの許可をロールに付与する必要があります。

  1. Lake Formation コンソールのナビゲーションペインにある [Data catalog][Databases] (データベース) を選択します。

  2. lakeformation_cloudtrail データベースを選択してから、[Actions] (アクション) ドロップダウンリストで、[Permissions] (許可) の見出しの下にある [Grant] (付与) を選択します。

  3. [Grant data permissions] (データ許可の付与) ダイアログボックスで、以下の選択を行います。

    1. [Principals] (プリンシパル) の [IAM user and roles] (IAM ユーザーおよびロール) で LakeFormationWorkflowRole を選択します。

    2. [LF-Tags or catalog resources] (LF タグまたはカタログリソース) で、[Named data catalog resources] (名前付きの Data Catalog リソース) を選択します。

    3. [Databases] (データベース) については、lakeformation_cloudtrail データベースがすでに追加されていることが確認できるはずです。

    4. [Database permissions] (データベースの許可) で、[Create table] (テーブルの作成)、[Alter] (変更)、および [Drop] (ドロップ) をオンにして、[Super] (スーパー) が選択されている場合はそれをオフにします。

    [Grant data permissions] (データ許可の付与) ダイアログボックスは、今の時点で以下のスクリーンショットのようになっているはずです。

    [Grant data permissions] (データ許可の付与) ダイアログボックスには、テキストで説明された選択項目が表示されます。ダイアログボックスは、[Principals] (プリンシパル)、[LF-Tags or catalog resources] (LF タグまたはカタログリソース)、および [Database permissions] (データベースの許可) の 3 つのセクションに分割されており、これらが縦向きに配置されています。
  4. [Grant] (付与) を選択します。

Lake Formation 許可の付与に関する詳細ついては、「Lake Formation 許可の管理」を参照してください。

ステップ 8: ブループリントを使用してワークフローを作成する

CloudTrail ログを読み取り、その構造を理解し、Data Catalog で適切なテーブルを作成するには、AWS Glue クローラ、ジョブ、トリガー、およびワークフローで構成されるワークフローをセットアップする必要があります。Lake Formation のブループリントを使用すると、このプロセスが容易になります。

ワークフローは、データを検出してデータレイクに取り込むジョブ、クローラ、およびトリガーを生成します。ワークフローは、事前定義された Lake Formation ブループリントのいずれかに基づいて作成します。

  1. Lake Formation コンソールのナビゲーションペインで [Blueprints] (ブループリント) を選択してから、[Use blueprint] (ブループリントを使用) を選択します。

  2. [Use a blueprint] (ブループリントの使用) ページの [Blueprint type] (ブループリントタイプ) で [AWS CloudTrail]を選択します。

  3. [Import source] (インポートソース) で、CloudTrail ソースと開始日を選択します。

  4. [Import target] (インポートターゲット) で、以下のパラメータを指定します。

    [Target database] (ターゲットデータベース) lakeformation_cloudtrail
    [Target storage location] (ターゲットストレージロケーション) s3://<yourName>-datalake-cloudtrail
    [Data format] (データ形式) Parquet
  5. [Import Frequency] (インポート頻度) には、[Run on demand] (オンデマンドで実行) を選択します。

  6. [Import target] (インポートオプション) で、以下のパラメータを指定します。

    [Workflow name] (ワークフロー名) lakeformationcloudtrailtest
    [IAM role] (IAM ロール) LakeFormationWorkflowRole
    [Table prefix] (テーブルプレフィックス) cloudtrailtest
    注記

    小文字を使用する必要があります。

  7. [Create] (作成) を選択し、ワークフローが正常に作成されたことコンソールが報告するまで待機します。

    ヒント

    以下のエラーメッセージが表示されましたか?

    User: arn:aws:iam::<account-id>:user/<datalake_administrator_user> is not authorized to perform: iam:PassRole on resource:arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole...

    表示された場合は、データレイク管理者ユーザーのインラインポリシーにある <account-id> が有効な AWS アカウント番号に置き換えられているかどうかをチェックしてください。

ステップ 9: ワークフローを実行する

ワークフローがオンデマンドで実行されることを指定したので、ワークフローは手動で開始する必要があります。

  • [Blueprints] (ブループリント) ページでワークフロー lakeformationcloudtrailtest を選択し、[Actions] (アクション) メニューから [Start] (開始) を選択します。

    ワークフローの実行に伴って、その進捗状況を [Last run status] (最終実行ステータス) 列で確認できます。更新ボタンを随時選択します。

    ステータスは、[RUNNING] (実行中) から、[Discovering] (検出中)、[Importing] (インポート中)、[COMPLETED] (完了) と移行します。

    ワークフローが完了すると、以下のようになります。

    • Data Catalog に新しいメタデータテーブルがある。

    • CloudTrail ログがデータレイクに取り込まれる。

    ワークフローが失敗する場合は、以下を実行します。

    1. ワークフローを選択し、[Actions] (アクション) メニューで [View graph] (グラフを表示) を選択します。

      AWS Glue コンソールでワークフローが開きます。

    2. そのワークフローが選択されていることを確認し、[History] (履歴) タブを選択します。

    3. [History] (履歴) で、最新の実行を選択し、[View run details] (実行の詳細を表示) を選択します。

    4. 動的 (ランタイム) グラフで失敗したジョブまたはクローラを選択し、エラーメッセージを確認します。障害が発生したノードは赤色または黄色のいずれかになっています。

ステップ 10: テーブルに対する SELECT を付与する

テーブルがポイントするデータをデータアナリストがクエリできるように、新しい Data Catalog テーブルに対する SELECT 許可を付与する必要があります。

注記

ワークフローは、ワークフローが作成するテーブルに対する SELECT 許可を、ワークフローを実行したユーザーに自動的に付与します。このワークフローはデータレイク管理者が実行したので、データアナリストに SELECT を付与する必要があります。

  1. Lake Formation コンソールのナビゲーションペインにある [Data catalog][Databases] (データベース) を選択します。

  2. lakeformation_cloudtrail データベースを選択してから、[Actions] (アクション) ドロップダウンリストで、[Permissions] (許可) の見出しの下にある [Grant] (付与) を選択します。

  3. [Grant data permissions] (データ許可の付与) ダイアログボックスで、以下の選択を行います。

    1. [Principals] (プリンシパル) の [IAM user and roles] (IAM ユーザーおよびロール) で datalake_user を選択します。

    2. [LF-Tags or catalog resources] (LF タグまたはカタログリソース) で、[Named data catalog resources] (名前付きの Data Catalog リソース) を選択します。

    3. [Databases] (データベース) については、lakeformation_cloudtrail データベースがすでに選択されているはずです。

    4. [Tables] (テーブル) には cloudtrailtest-cloudtrail を選択します。

    5. [Table and column permissions] (テーブルと列の許可) で [Select] (選択) をオンにします。

  4. [Grant] (付与) を選択します。

次のステップは、データアナリストとして実行します。

ステップ 11: Amazon Athena を使用してデータレイクをクエリする

Amazon Athena コンソールを使用して、データレイク内の CloudTrail データをクエリします。

  1. Athena コンソール (https://console.aws.amazon.com/athena/) を開き、データアナリストのユーザー datalake_user としてサインインします。

  2. 必要に応じて [Get Started] (開始する) を選択して、Athena クエリエディタに進みます。

  3. [Data source] (データソース) で [AwsDataCatalog] を選択します。

  4. [Database] (データベース) で、lakeformation_cloudtrail を選択します。

    [Tables] (テーブル) リストが表示されます。

  5. テーブル cloudtrailtest-cloudtrail の横にあるオーバーフローメニュー (縦方向に並んだ 3 つの点) で、[Preview table] (表をプレビュー)、[Run] (実行) の順に選択します。

    クエリが実行され、10 行のデータが表示されます。

    これまで Athena を使用したことがないという場合は、最初に Athena コンソールでクエリ結果を保存するための Amazon S3 ロケーションを設定する必要があります。datalake_user は、ユーザーが選択した Amazon S3 バケットへのアクセスに必要な許可を持っている必要があります。

注記

チュートリアルが完了したところで、次は組織内のプリンシパルにデータ許可とデータロケーション許可を付与します。