

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

# AWS CloudTrail ソースからのデータレイクの作成
<a name="getting-started-cloudtrail-tutorial"></a>

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

**データレイクを作成するための大まかなステップ**

1. Amazon Simple Storage Service (Amazon S3) パスをデータレイクとして登録します。

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

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

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

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

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

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

**Topics**
+ [対象者](#cloudtrail-tut-personas)
+ [前提条件](#cloudtrail-tut-prereqs)
+ [ステップ 1: データアナリストユーザーの作成](#cloudtrail-tut-create-lf-user)
+ [ステップ 2: ワークフローロールに AWS CloudTrail ログを読み取るアクセス許可を追加する](#cloudtrail-tut-grant-cloudtrail)
+ [ステップ 3: データレイクとしての Amazon S3 バケットを作成する](#cloudtrail-tut-create-bucket)
+ [ステップ 4: Amazon S3 パスを登録する](#cloudtrail-tut-register)
+ [ステップ 5: データのロケーションの許可を付与する](#cloudtrail-tut-data-location)
+ [ステップ 6: Data Catalog でデータベースを作成する](#cloudtrail-tut-create-db)
+ [ステップ 7: データの許可を付与する](#cloudtrail-tut-data-permissions)
+ [ステップ 8: ブループリントを使用してワークフローを作成する](#cloudtrail-tut-create-workflow)
+ [ステップ 9: ワークフローを実行する](#cloudtrail-tut-run-workflow)
+ [ステップ 10: テーブルに対する SELECT を付与する](#cloudtrail-tut-grant-table)
+ [ステップ 11: を使用してデータレイクをクエリする Amazon Athena](#cloudtrail-tut-query)

## 対象者
<a name="cloudtrail-tut-personas"></a>

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


**対象者**  

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

## 前提条件
<a name="cloudtrail-tut-prereqs"></a>

開始する前に、以下を確認してください。
+ 「[セットアップ AWS Lake Formation](initial-lf-config.md)」のタスクを完了していること。
+ CloudTrail ログのロケーションを把握していること。
+ Athena では、データアナリストペルソナが Athena を使用する前に、クエリ結果を保存するための Amazon S3 バケットを作成する必要があります。

 AWS Identity and Access Management (IAM) に精通していることが前提です。IAM については、「[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」を参照してください。

## ステップ 1: データアナリストユーザーの作成
<a name="cloudtrail-tut-create-lf-user"></a>

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

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

1. 以下の設定で、`datalake_user` という名前のユーザーを作成します。
   +  AWS マネジメントコンソール アクセスを有効にします。
   + パスワードを設定して、パスワードのリセットを不要にする。
   + `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 ログを読み取るアクセス許可を追加する
<a name="cloudtrail-tut-grant-cloudtrail"></a>

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

   `LakeFormationWorkflowRole` ロールを作成するには、「[(オプション) ワークフロー用の IAM ロールを作成する](initial-lf-config.md#iam-create-blueprint-role)」を参照してください。
**重要**  
*<your-s3-cloudtrail-bucket>* は、CloudTrail データの Amazon S3 ロケーションに置き換えてください。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:GetObject",
               "Resource": ["arn:aws:s3:::<your-s3-cloudtrail-bucket>/*"]
           }
       ]
   }
   ```

------

1. ロールに 3 つのポリシーがアタッチされていることを確認します。

## ステップ 3: データレイクとしての Amazon S3 バケットを作成する
<a name="cloudtrail-tut-create-bucket"></a>

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

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

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

   Amazon S3 バケットの詳しい作成手順については、「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)」を参照してください。

## ステップ 4: Amazon S3 パスを登録する
<a name="cloudtrail-tut-register"></a>

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

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

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

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

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

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

## ステップ 5: データのロケーションの許可を付与する
<a name="cloudtrail-tut-data-location"></a>

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

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

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

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

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

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

データロケーション許可については、「[Underlying data access control](access-control-underlying-data.md#data-location-permissions)」を参照してください。

## ステップ 6: Data Catalog でデータベースを作成する
<a name="cloudtrail-tut-create-db"></a>

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

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

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

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

## ステップ 7: データの許可を付与する
<a name="cloudtrail-tut-data-permissions"></a>

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

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

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

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

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

   1. **[LF タグまたはカタログリソース]** で、**[名前付きのデータカタログリソース]** を選択します。

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

   1. **[データベースのアクセス許可]** で、**[テーブルを作成]**、**[変更]**、および **[ドロップ]** をオンにして、**[スーパー]** が選択されている場合はそれをオフにします。

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

Lake Formation 許可の付与に関する詳細ついては、「[Lake Formation 許可の管理](managing-permissions.md)」を参照してください。

## ステップ 8: ブループリントを使用してワークフローを作成する
<a name="cloudtrail-tut-create-workflow"></a>

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

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

1. Lake Formation コンソールのナビゲーションペインで、**取り込み**で**ブループリント**を選択し、**ブループリントの使用**を選択します。

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

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

1. **[Import target]** (インポートターゲット) で、以下のパラメータを指定します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/getting-started-cloudtrail-tutorial.html)

1. [Import Frequency] (インポート頻度) には、**[Run on demand]** (オンデマンドで実行) を選択します。

1. **[Import target]** (インポートオプション) で、以下のパラメータを指定します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/getting-started-cloudtrail-tutorial.html)

1. **[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: ワークフローを実行する
<a name="cloudtrail-tut-run-workflow"></a>

ワークフローがオンデマンドで実行されることを指定したので、ワークフローは手動で開始する必要があります。
+ **[Blueprints]** (ブループリント) ページでワークフロー `lakeformationcloudtrailtest` を選択し、**[Actions]** (アクション) メニューから **[Start]** (開始) を選択します。

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

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

  ワークフローが完了すると、以下のようになります。
  + Data Catalog に新しいメタデータテーブルがある。
  + CloudTrail ログがデータレイクに取り込まれる。

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

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

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

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

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

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

## ステップ 10: テーブルに対する SELECT を付与する
<a name="cloudtrail-tut-grant-table"></a>

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

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

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

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

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

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

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

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

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

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

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

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

## ステップ 11: を使用してデータレイクをクエリする Amazon Athena
<a name="cloudtrail-tut-query"></a>

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

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

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

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

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

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

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

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

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

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