

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

# Lake Formation でのワークフローを使用したデータのインポート
<a name="workflows"></a>

AWS Lake Formation では、*ワークフロー*を使用してデータをインポートできます。ワークフローは、データレイクにデータをインポートするためのデータソースとスケジュールを定義します。これは、データレイクのロードとアップデートのプロセスをオーケストレートするために使用される、AWS Glue クローラー、ジョブ、およびトリガーのコンテナです。

**Topics**
+ [Lake Formation のブループリントとワークフロー](workflows-about.md)
+ [ワークフローの作成](workflows-creating.md)
+ [ワークフローの実行](workflows-running.md)

# Lake Formation のブループリントとワークフロー
<a name="workflows-about"></a>

ワークフローは、複雑なマルチジョブの抽出、変換、ロード (ETL) アクティビティをカプセル化します。ワークフローは、データのロードと更新をオーケストレートするために、AWS Glue クローラー、ジョブ、およびトリガーを生成します。Lake Formation は、ワークフローを単一のエンティティとして実行し、追跡します。ワークフローは、オンデマンドで、またはスケジュールに従って実行されるように設定できます。

**注記**  
Spark Parquet ライターは、列名での特殊文字をサポートしていません。これはライター自体の技術的な制限であり、設定の問題ではありません。

Lake Formation で作成するワークフローは、AWS Glue コンソールに DAG (Directed Acyclic Graph) として表示されます。各 DAG ノードは、ジョブ、クローラ、またはトリガーです。進捗状況のモニタリングとトラブルシューティングを行うために、ワークフロー内の各ノードのステータスを追跡することができます。

Lake Formation ワークフローが完了すると、ワークフローを実行したユーザーには、ワークフローが作成する Data Catalog テーブルに対する Lake Formation の `SELECT` 許可が付与されます。

ワークフローは AWS Glue で作成することもできますが、Lake Formation ではブループリントからワークフローを作成できるため、Lake Formation でのワークフローの作成は、よりシンプルで、自動的です。Lake Formation は、以下のタイプのブループリントを提供します。
+ **[Database snapshot]** (データベーススナップショット) – すべてのテーブルからのデータを、JDBC ソースからデータレイクにロードまたは再ロードします。除外パターンに基づいて、一部のデータをソースから除外することができます。
+ **[Incremental database]** (増分データベース) – 以前に設定されたブックマークに基づいて、新しいデータだけを JDBC ソースからデータレイクにロードします。これに含める JDBC ソースデータベース内の個々のテーブルは、ユーザーが指定します。ブックマーク列とブックマークのソート順をテーブルごとに選択して、以前にロードされたデータを把握しておきます。一連のテーブルに対して増分データベースブループリントを初めて実行すると、ワークフローがそれらのテーブルからすべてのデータをロードして、次回の増分データベースブループリントの実行のためにブックマークを設定します。このため、データソース内の各テーブルをパラメータとして指定しておけば、データベーススナップショットブループリントではなく、増分データベースブループリントを使用して、すべてのデータをロードすることができます。
+ [**Log file**] (ログファイル) – AWS CloudTrail、Elastic Load Balancing ログ、Application Load Balancer ログなどのログファイルソースからのデータを一括でロードします。

以下の表を使用して、データベーススナップショットと増分データベースブループリントのどちらを使用するかを決定してください。


| データベーススナップショットを使用する状況 | 増分データベースを使用する状況 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/workflows-about.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/workflows-about.html)  | 

**注記**  
Lake Formation によって作成されたブループリントとワークフローを編集することはできません。

# ワークフローの作成
<a name="workflows-creating"></a>

開始する前に、`LakeFormationWorkflowRole` ロールに必要なデータ許可とデータロケーション許可が付与されていることを確認してください。これは、ワークフローが Data Catalog にメタデータテーブルを作成し、Amazon S3 内のターゲットロケーションにデータを書き込むことができるようにするためです。詳細については、「[(オプション) ワークフロー用の IAM ロールを作成する](initial-lf-config.md#iam-create-blueprint-role)」および「[Lake Formation 許可の概要](lf-permissions-overview.md)」を参照してください。

**注記**  
Lake Formation は、`GetTemplateInstance`、`GetTemplateInstances`、および `InstantiateTemplate` オペレーションを使用して、ブループリントからワークフローを作成します。これらのオペレーションは一般には公開されておらず、ユーザーに代わってリソースを作成するために内部でのみ使用されます。ユーザーは、ワークフローを作成するための CloudTrail イベントを受け取ります。

**ブループリントからワークフローを作成する**

1. AWS Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) を開きます。データレイク管理者として、またはデータエンジニア許可を持つユーザーとしてサインインします。詳細については、「[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)」を参照してください。

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

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

1. **[Import source]** (インポートソース) で、データソースを指定します。

   JDBC ソースからインポートしている場合は、以下を指定します。
   + ****[Database connection]**** (データベース接続) – リストから接続を選択します。AWS Glue コンソールを使用して、追加の接続を作成します。接続の JDBC ユーザー名とパスワードによって、ワークフローがアクセスできるデータベースオブジェクトが決まります。
   + ****[Source data path]**** (ソースデータパス) – データベース製品に応じて、*<database>*/*<schema>*/*<table>*、または *<database>*/*<table>* を入力します。Oracle データベース と MySQL は、パス内のスキーマをサポートしません。*<schema>* または *<table>* は、パーセント (%) 文字に置き換えることができます。例えば、システム識別子 (SID) が `orcl` の Oracle データベースの場合は、`orcl/%` を入力して、接続で指定されているユーザーがアクセスできるすべてのテーブルをインポートします。
**重要**  
このフィールドでは、大文字と小文字が区別されます。いずれかのコンポーネントで大文字と小文字の不一致がある場合は、ワークフローが失敗します。

     MySQL データベースを指定する場合、AWS Glue ETL はデフォルトで Mysql5 JDBC ドライバーを使用するため、MySQL8 はネイティブでサポートされていません。「*AWS Glue デベロッパーガイド*」の「[JDBC connectionType の値](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-jdbc)」で説明されているように、`customJdbcDriverS3Path` パラメータを使用するように ETL ジョブスクリプトを編集して、MySQL8 をサポートする別の JDBC ドライバーを使用することができます。

   ログファイルからインポートしている場合は、ワークフローに指定するロール (「ワークフローロール」) に、データソースへのアクセスに必要な IAM 許可があることを確認してください。例えば、AWS CloudTrail ログをインポートするには、ユーザーが、ワークフローの作成中に CloudTrail ログのリストを確認するための `cloudtrail:DescribeTrails` と `cloudtrail:LookupEvents` 許可を持っており、ワークフローロールが Amazon S3 内の CloudTrail ロケーションに対する許可を持っている必要があります。

1. 以下のいずれかを実行します。
   + **[Database snapshot]** (データベーススナップショット) のブループリントタイプの場合は、オプションで、1 つ、または複数の除外パターンを指定することによってインポートするデータのサブセットを特定します。これらの除外パターンは、Unix スタイルの `glob` パターンです。これらは、ワークフローによって作成されるテーブルのプロパティとして保存されます。

     利用可能な除外パターンの詳細については、「*AWS Glue デベロッパーガイド*」の「[包含パターンと除外パターン](https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude)」を参照してください。
   + **[Incremental database]** (増分データベース) のブループリントタイプの場合は、以下のフィールドを指定します。インポートするテーブルごとに行を追加してください。  
**[Table name] (テーブル名)**  
インポートするテーブル。すべて小文字にする必要があります。  
**[Bookmark keys] (ブックマークキー)**  
ブックマークキーを定義する列名のカンマ区切りのリスト。空白になっている場合は、新しいデータの判別にプライマリキーが使用されます。各列の大文字と小文字は、データソースで定義されている大文字と小文字と一致する必要があります。  
プライマリキーがデフォルトのブックマークキーとして認められるのは、それがギャップを生じることなく連続的に増加または減少している場合のみです。プライマリキーをブックマークキーとして使用したいが、ギャップがあるという場合は、プライマリキー列をブックマークキーとして指定する必要があります。  
**[Bookmark order] (ブックマークの順序)**  
**[Ascending]** (昇順) を選択すると、ブックマークされた値よりも大きい値を持つ行が新しい行として識別されます。**[Descending]** (降順) を選択すると、ブックマークされた値より小さい値を持つ行が新しい行として識別されます。  
**[Partitioning scheme] (パーティショニングスキーム)**  
(オプション) スラッシュ (/) で区切られた、パーティショニングキー列のリスト。例えば、` year/month/day` などです。  
![\[コンソールの [Incremental data] (増分データ) セクションには、[Table name] (テーブル名)、[Bookmark keys] (ブックマークキー)、[Bookmark order] (ブックマークの順序)、および [Partitioning scheme] (パーティショニングスキーム)のフィールドがあります。行は追加または削除 (それぞれの行が異なるテーブル用のもの) することができます。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/incremental-data.png)

     詳細については、「*AWS Glueデベロッパーガイド*」の「[ジョブのブックマークを使用した処理済みデータの追跡](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html)」を参照してください。

1. **[Import target]** (インポートターゲット) で、ターゲットデータベース、ターゲット Amazon S3 ロケーション、およびデータ形式を指定します。

   ワークフローロールに、データベースと Amazon S3 ターゲットロケーションに対する必要な Lake Formation 許可があることを確認してください。
**注記**  
現在、ブループリントはターゲットでのデータの暗号化をサポートしていません。

1. インポートの頻度 を選択します。

   **[Custom]** (カスタム) オプションでは、`cron` 式を指定することができます。

1. **[Import options]** (インポートオプション) で以下を実行します。

   1. ワークフロー名を入力します。

   1. ロールには、「[(オプション) ワークフロー用の IAM ロールを作成する](initial-lf-config.md#iam-create-blueprint-role)」で作成したロール `LakeFormationWorkflowRole` を選択します。

   1. オプションで、テーブルプレフィックスを指定します。プレフィックスは、ワークフローが作成する Data Catalog テーブルの名前の前に付加されます。

1. **[Create]** (作成) を選択し、ワークフローが正常に作成されたことコンソールが報告するまで待機します。
**ヒント**  
以下のエラーメッセージが表示されましたか?  
`User: arn:aws:iam::<account-id>:user/<username> is not authorized to perform: iam:PassRole on resource:arn:aws:iam::<account-id>:role/<rolename>...`  
表示された場合は、すべてのポリシーの *<account-id>* が有効な AWS アカウント番号に置き換えられていることを確認してください。

**以下も参照してください。**  
[Lake Formation のブループリントとワークフロー](workflows-about.md)

# ワークフローの実行
<a name="workflows-running"></a>

ワークフローは、Lake Formation コンソール、AWS Glue コンソール、AWS Glue コマンドラインインターフェイス (AWS CLI)、または API を使用して実行することができます。

**ワークフローを実行する (Lake Formation コンソール)**

1. AWS Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) を開きます。データレイク管理者として、またはデータエンジニア許可を持つユーザーとしてサインインします。詳細については、「[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)」を参照してください。

1. ナビゲーションペインで **[Blueprints]** (ブループリント) を選択します。

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

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

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

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

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

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

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

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

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

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

**以下も参照してください。**  
[Lake Formation のブループリントとワークフロー](workflows-about.md)