

# AWS Glue の開始方法
<a name="setting-up"></a>

以下のセクションでは、AWS Glue の設定について説明します。AWS Glue の使用を開始するにあたり、すべての設定事項が必要になるわけではありません。IAM アクセス許可、暗号化、VPC を使用する場合の DNS、データストアにアクセスするための環境、インタラクティブセッションを使用する場合など、必要に応じて指示に従って設定することができます。

**Topics**
+ [AWS Glue クローン作成の概要](start-console-overview.md)
+ [AWS Glue 用の IAM アクセス許可のセットアップ](set-up-iam.md)
+ [AWS Glue 使用状況プロファイルの設定](start-usage-profiles.md)
+ [AWS Glue Data Catalog の開始方法](start-data-catalog.md)
+ [データストアへのネットワークアクセスを設定する](start-connecting.md)
+ [AWS Glue での暗号化のセットアップ](set-up-encryption.md)
+ [AWS Glue のための開発用ネットワークの設定](start-development-endpoint.md)

# AWS Glue クローン作成の概要
<a name="start-console-overview"></a>

AWS Glue では、AWS Glue Data Catalog にメタデータを格納します。このメタデータを使用して、データソースを変換してデータウェアハウスやデータレイクをロードする ETL ジョブを調整します。以下の手順では、一般的なワークフローと、AWS Glue を使用して作業する際に行う選択肢のいくつかについて説明します。

**注記**  
以下の手順に従うことも、手順 1 ～ 3 を自動的に実行するワークフローを作成することもできます。詳しくは、「[AWS Glue で設計図とワークフローを使用して複雑な ETL アクティビティを実行する](orchestrate-using-workflows.md)」を参照してください。

1. AWS Glue Data Catalog にテーブル定義を入力します。

   永続データストアの場合は、コンソールでクローラを追加して AWS Glue Data Catalog にデータを追加できます。[**Add crawler (クローラを追加)**] ウィザードは、テーブルのリストまたはクローラのリストから開始できます。クローラがアクセスするための 1 つ以上のデータストアを選択します。スケジュールを作成して、クローラの実行頻度を決定することもできます。データストリームの場合は、テーブル定義を手動で作成して、ストリームプロパティを定義できます。

   必要に応じて、データのスキーマを推測するカスタム分類子を提供できます。 grok パターンを使用してカスタム分類子を作成できます。ただし、AWS Glue には、カスタム分類子がデータを認識しない場合にクローラによって自動的に使用される組み込み分類子が用意されています。クローラを定義する時に、分類子を選択する必要はありません。AWS Glue の分類子の詳細については、「[分類子の定義と管理](add-classifier.md)」を参照してください。

   一部のタイプのデータストアをクロールするには、認証とロケーション情報を提供する接続が必要です。必要に応じて、AWS Glue コンソールでこの必要な情報を提供する接続を作成できます。

   クローラはデータストアを読み取り、データ定義と名前付きテーブルを AWS Glue Data Catalog に作成します。これらのテーブルは、選択したデータベースに整理されます。また、手動で作成したテーブルを Data Catalog に入力することもできます。この方法では、スキーマおよびその他のメタデータを提供して、Data Catalog にテーブル定義を作成します。この方法は少し面倒でエラーが発生しやすいため、より良い方法として、クローラにテーブル定義を作成させることができます。

   AWS Glue Data Catalog にテーブル定義を入力する方法の詳細については、「[テーブルの作成](tables-described.md)」を参照してください。

1. ソースからターゲットへのデータの変換を記述するジョブを定義します。

   一般に、ジョブを作成するには、次の選択をする必要があります。
   + ジョブのソースとなるテーブルを AWS Glue Data Catalog から選択します。ジョブでは、このテーブル定義を使ってデータソースにアクセスし、データの型式を解釈します。
   + ジョブのターゲットとなるテーブルまたは場所を AWS Glue Data Catalog から選択します。ジョブはこの情報を使用して、データストアにアクセスします。
   + ソースをターゲットに変換するスクリプトを生成するように AWS Glue に指示します。AWS Glue は、ソーススキーマからターゲットスキーマ形式にデータを変換する組み込み変換を呼び出すコードを生成します。これらの変換は、データのコピー、列の名前の変更、データのフィルタリングなどの操作を実行し、必要に応じてデータを変換します。このスクリプトは、AWS Glue コンソールで変更できます。

   AWS Glue でジョブを定義する方法の詳細については、「[Visual ETL ジョブの作成](author-job-glue.md)」を参照してください。

1. ジョブを実行してデータを変換します。

   オンデマンドでジョブを実行するか、次のいずれかのトリガータイプに基づいてジョブを開始することができます。
   + cron スケジュールに基づいたトリガー。
   + イベントベースのトリガー。たとえば、別のジョブが正常に完了すると、AWS Glue ジョブを開始できます。
   + オンデマンドでジョブを開始するトリガー。

   AWS Glue のトリガーの詳細については、「[トリガーを使用したジョブとクローラの開始](trigger-job.md)」を参照してください。

1. スケジュールされたクローラとトリガーされたジョブをモニタリングします。

   AWS Glue コンソールを使用して以下を表示します。
   + ジョブの実行の詳細とエラー。
   + クローラは詳細とエラーを実行します。
   + AWS Glue アクティビティに関する通知

   AWS Glue でクローラとジョブをモニタリングする方法の詳細については、「[AWS Glue のモニタリング](monitor-glue.md)」を参照してください。

# AWS Glue 用の IAM アクセス許可のセットアップ
<a name="set-up-iam"></a>

このトピックの手順は、AWS Glue の AWS Identity and Access Management (IAM) アクセス許可をすばやくセットアップするのに役立ちます。以下のタスクを実行します。
+ IAM ID に AWS Glue リソースへのアクセスを許可します。
+ ジョブの実行、データへのアクセス、AWS Glue Data Quality タスクの実行のためのサービスロールを作成します。

AWS Glue の IAM アクセス許可をカスタマイズするために使用できる詳細な手順については、「[AWS Glue の IAM アクセス許可の設定](configure-iam-for-glue.md)」を参照してください。

**AWS マネジメントコンソール で AWS Glue の IAM アクセス許可をセットアップするには**

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

1. [**開始方法**] を選択します。

1. **[AWS Glue のアカウントの準備]** で、**[IAM アクセス許可のセットアップ]** を選択します。

1. AWS Glue アクセス許可を付与する IAM ID (ロールまたはユーザー) を選択します。AWS Glue は `[AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)` マネージドポリシーをこれらの ID にアタッチします。これらのアクセス許可を手動で設定する場合、またはデフォルトのサービスロールを設定するだけでよい場合は、このステップをスキップできます。

1. [**次へ**] を選択します。

1. ロールとユーザーが必要とする Amazon S3 アクセス権のレベルを選択します。このステップで選択したオプションは、選択したすべての ID に適用されます。

   1. **[S3 ロケーションの選択]** で、アクセスを許可する Amazon S3 ロケーションを選択します。

   1. 次に、上記で選択したロケーションに対して各 ID に付与するアクセス権を **[読み取り専用]** (推奨) にするか **[読み取りおよび書き込み]** にするかを選択します。AWS Glue は、選択した読み取りまたは書き込みアクセス許可とロケーションとの組み合わせに基づいて、アクセス許可ポリシーを ID に追加します。

      次の表は、AWS Glue が Amazon S3 アクセスに付与するアクセス許可を示しています。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/set-up-iam.html)

1. [**次へ**] を選択します。

1. アカウントのデフォルトの AWS Glue サービスロールを選択します。サービスロールは、AWS Glue がユーザーに代わって他の AWS のサービスのリソースにアクセスするのに使用する IAM ロールです。詳細については、「[AWS Glue のサービスロール](security_iam_service-with-iam.md#security_iam_service-with-iam-roles-service)」を参照してください。
   + 標準の AWS Glue サービスロールを選択すると、AWS Glue は AWS アカウント に新しい IAM ロールを `AWSGlueServiceRole` という名前で作成して、次のマネージドポリシーをアタッチします。アカウントに既に `AWSGlueServiceRole` という名前の IAM ロールがある場合は、AWS Glue はこれらのポリシーをその既存のロールにアタッチします。
     +  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – この管理ポリシーは、AWS Glue がユーザーに代わってリソースにアクセスして管理するために必要です。これにより、AWS Glue は AWS Glue ジョブ、クローラー、接続などのさまざまなリソースを作成、更新、削除できます。このポリシーは、ログ記録の目的で Amazon CloudWatch ログにアクセスするための AWS Glue のアクセス許可も付与します。開始するには、このポリシーを使用して AWS Glue の使用方法を学ぶことをお勧めします。AWS Glue に慣れるにつれて、必要に応じてリソースへのアクセスを微調整できるポリシーを作成できます。
     +  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) – この管理ポリシーは、AWS マネジメントコンソール を介した AWS Glue サービスへのフルアクセスを付与します。このポリシーは、AWS Glue 内で任意のオペレーションを実行するアクセス許可を付与し、必要に応じて任意の AWS Glue リソースを作成、変更、削除することを可能にします。ただし、このポリシーでは、基盤となるデータストアや、ETL プロセスに関係する可能性のあるその他の AWS のサービスにアクセスするためのアクセス許可は付与されないことに注意してください。`AWSGlueConsoleFullAccess` ポリシーによって付与されるアクセス許可の範囲が広いため、最小特権の原則に従って慎重に割り当てる必要があります。通常、可能な場合は、特定のユースケースと要件に合わせたより詳細なポリシーを作成して使用することをお勧めします。
     +  [ AWSGlueConsole-S3-read-only-policy](https://console.aws.amazon.com/iam/home#policies/details/arn:aws:iam:aws:policy/AWSGlueConsole-S3-read-only-policy) – このポリシーは、指定された Amazon S3 バケットから AWS Glue がデータを読み取ることを許可しますが、Amazon S3 のデータに対する書き込みと変更を行うアクセス許可は付与しません。

        [ AWSGlueConsole-S3-read-and-write](https://console.aws.amazon.com/iam/home#policies/details/arn:aws:iam:aws:policy/AWSGlueConsole-S3-read-and-write) – このポリシーは、ETL プロセスの一環として、指定された Amazon S3 バケットに対して AWS Glue がデータを読み書きすることを許可します。
   +  既存の IAM ロールを選択すると、AWS Glue は、そのロールをデフォルトとして設定しますが、ロールに `AWSGlueServiceRole` アクセス許可は追加されません。ロールが AWS Glue のサービスロールとして使用されるように設定したことを確認してください。詳細については、「[ステップ 1: AWS Glue サービスの IAM ポリシーを作成する](create-service-policy.md)」および「[ステップ 2: AWS Glue 用の IAM ロールを作成する](create-an-iam-role.md)」を参照してください。

1. [**次へ**] を選択します。

1. 最後に、選択したアクセス許可を確認し、**[変更を適用]** を選択します。変更を適用すると、AWS Glue は選択した ID に IAM アクセス許可を追加します。IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) で新しいアクセス許可の表示や変更ができます。

これで、AWS Glue の最小限の IAM アクセス許可のセットアップが完了しました。実稼働環境では、「[「AWS Glue」 のセキュリティ](security.md)」と「[AWS Glue のアイデンティティとアクセスの管理](security-iam.md)」をよく理解し、ユースケースに対して AWS リソースを確保できるようにすることをお勧めします。

## 次のステップ
<a name="set-up-iam-next-steps"></a>

IAM アクセス許可の設定が完了したので、次のトピックを確認して AWS Glue の使用を開始できます。
+ [「AWS スキルビルダー」の「AWS Glue の開始方法」](https://explore.skillbuilder.aws/learn/course/external/view/elearning/8171/getting-started-with-aws-glue)
+ [AWS Glue Data Catalog の開始方法](start-data-catalog.md)

# AWS Glue Studio の設定
<a name="setting-up-studio"></a>

ビジュアル ETL 用に AWS Glue を初めて使用する場合は、このセクションのタスクを完了してください。

**Topics**
+ [AWS Glue Studio ユーザーに必要な IAM アクセスアクセス許可を確認します](getting-started-min-privs.md)
+ [ETL ジョブに必要な IAM アクセス許可を確認する](getting-started-min-privs-job.md)
+ [AWS Glue Studio に対する IAM のアクセス許可の設定](getting-started-iam-permissions.md)
+ [ETL ジョブの VPC を設定します](getting-started-vpc-config.md)

# AWS Glue Studio ユーザーに必要な IAM アクセスアクセス許可を確認します
<a name="getting-started-min-privs"></a>

AWS Glue Studio を使用するには、ユーザーはさまざまな AWS リソースにアクセスできる必要があります。ユーザーは、Amazon S3 バケット、IAM ポリシーとロール、および AWS Glue Data Catalog オブジェクト。

## AWS Glue サービスのアクセス許可
<a name="getting-started-min-privs-glue"></a>

AWS Glue Studio は、AWS Glue サービスのアクションとリソースを使用します。AWS Glue Studio を効果的に使用するには、ユーザーはこれらのアクションやリソースに対するアクセス許可が必要です。AWS Glue Studio ユーザーに `AWSGlueConsoleFullAccess` マネージドポリシーを付与するか、より少ないアクセス許可の組み合わせでカスタムポリシーを作成できます。

**重要**  
セキュリティのベストプラクティスに従って、ポリシーを強化して、Amazon S3 バケットおよび Amazon CloudWatch ロググループへのアクセスをさらに制限することが推奨されます。Amazon S3 ポリシーの例については、「[Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket](https://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/)」を参照してください。

## AWS Glue Studio のためのカスタム IAM ポリシーの作成
<a name="getting-started-all-gs-privs"></a>

AWS Glue Studio では、カスタムポリシーを作成するためのアクセス許可セットを、より小規模にできます。カスタムポリシーは、オブジェクトまたはアクションのサブセットに対しアクセス許可を付与できます。カスタムポリシーを作成する際には、以下の情報を参考にしてください。

 AWS Glue Studio API を使用するには、IAM アクセス許可のアクションポリシーに `glue:UseGlueStudio` を含めます。`glue:UseGlueStudio` を使用することで、時間の経過とともに API にさらにアクションが追加されても、すべての AWS Glue Studio アクションにアクセスできます。

 AWS Glue で定義されるアクションの詳細については、「[AWS Glue で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsglue.html)」を参照してください。

 **データ準備の作成アクション** 
+ SendRecipeAction
+ GetRecipeAction

 **有向非巡回 (DAG) に関するアクション** 
+ CreateDag
+ UpdateDag
+ GetDag
+ DeleteDag

 **ジョブに関するアクション** 
+ SaveJob
+ GetJob
+ CreateJob
+ DeleteJob
+ GetJobs
+ UpdateJob

 **ジョブ実行に関するアクション** 
+ StartJobRun
+ GetJobRuns
+ BatchStopJobRun
+ GetJobRun
+ QueryJobRuns
+ QueryJobs
+ QueryJobRunsAggregated

 **スキーマに関するアクション** 
+ GetSchema
+ GetInferredSchema

 **データベースに関するアクション** 
+ GetDatabases

 **プランに関するアクション** 
+ GetPlan

 **テーブルに関するアクション** 
+ SearchTables
+ GetTables
+ GetTable

 **接続に関するアクション** 
+ CreateConnection
+ DeleteConnection
+ UpdateConnection
+ GetConnections
+ GetConnection

 **マッピングに関するアクション** 
+ GetMapping

 **S3 プロキシに関するアクション**
+ ListBuckets
+ ListObjectsV2
+ GetBucketLocation

**セキュリティ設定に関するアクション**
+ GetSecurityConfigurations 

**スクリプトに関するアクション**
+ CreateScript (AWS Glue での同じ名前の API とは異なります)

## AWS Glue Studio API へのアクセス
<a name="getting-started-glue-studio-apis"></a>

 AWS Glue Studio にアクセスするには、IAM アクセス許可のアクションポリシーリストに `glue:UseGlueStudio` を追加します。

 以下の例では、`glue:UseGlueStudio` はアクションポリシーに含まれますが、AWS Glue Studio API は個別に識別されません。これは、`glue:UseGlueStudio` を含めることで、IAMアクセス許可で個別に AWS Glue Studio APIを指定する必要なしに、内部 API へのアクセス許可が自動的に付与されるためです。

 この例では、リストされた追加のアクションポリシー (`glue:SearchTables` など) が AWS Glue Studio API ではないため、場合によっては IAM アクセス許可に含める必要があります。Amazon S3 プロキシアクションを含めて、付与する Amazon S3 アクセス許可のレベルを指定することもできます。以下のポリシーの例では、選択した IAM ロールに十分なアクセス許可がある場合に、AWS Glue Studio を開く、ビジュアルジョブを作成する、ビジュアルジョブを保存/実行するためのアクセス許可が付与されます。

## ノートブックとデータのプレビューアクセス許可
<a name="getting-started-data-preview-perms"></a>

データプレビューとノートブックを使用すると、ジョブを実行することなく、ジョブの任意の段階（読み取り、変換、書き込み）でデータのサンプルを表示できます。データにアクセスするときに使用する AWS Identity and Access Management の AWS Glue Studio (IAM)ロールを指定します。IAM ロールは想定可能であることを意図しており、標準の長期認証情報 (パスワードやアクセスキーなど)を関連付けることはありません。その代わり、AWS Glue Studio がそのロールを引き受けて、IAM は一時的なセキュリティ認証情報を提供します。

データプレビューとノートブックコマンドが正しく動作するようにするには、文字列 `AWSGlueServiceRole` で始まる名前のロールを使用します。ロールに別の名前を使用する場合は、`iam:passrole` アクセス許可を追加し、IAM のロールに対するポリシーを設定する必要があります。詳しくは、「[「AWSGlueServiceRole\$1」 という名前ではないロールの IAM ポリシーを作成します。](getting-started-iam-permissions.md#create-iam-policy) 」を参照してください。

**警告**  
ロールがノートブックに対する `iam:passrole` アクセス許可を与えた場合、ロールチェーンを実装すると、あるユーザーが意図せずにノートブックにアクセスする可能性があります。現在、ノートブックへアクセス許可されているユーザーをモニタリングできる監査は実装されていません。

IAM ID によるデータプレビューセッションの作成を認めない場合は、「[ID によるデータプレビューセッションの作成を拒否する](security_iam_id-based-policy-examples.md#deny-data-preview-sessions-per-identity)」の例を参照してください。

## Amazon CloudWatch のアクセス許可
<a name="getting-started-min-privs-cloudwatch"></a>

AWS Glue Studio を使用して Amazon CloudWatch ジョブをモニタリングできます。これは、AWS Glue から raw データを収集して読み取り可能なほぼリアルタイムのメトリクスに処理します。デフォルトでは、AWS Glue メトリクスデータは CloudWatch に自動的に送信されます。詳細については、「*Amazon CloudWatch ユーザーガイド*」の「[Amazon CloudWatch とは何ですか?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html)」および「*AWS Glue デベロッパーガイド*」の「[AWS Glue メトリクス](https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html#awsglue-metrics)」を参照してください。

CloudWatch ダッシュボードにアクセスするには、AWS Glue Studio では以下のいずれかが必要です。
+ `AdministratorAccess` ポリシー
+ `CloudWatchFullAccess` ポリシー
+ これらの特定のアクセス許可の 1 つ以上を含むカスタムポリシー。
  + `cloudwatch:GetDashboard` および `cloudwatch:ListDashboards` でダッシュボードを表示する
  + `cloudwatch:PutDashboard` でダッシュボードを作成または変更する
  + `cloudwatch:DeleteDashboards` でダッシュボードを削除する

ポリシーを使用してIAMユーザーのアクセス許可を変更する方法の詳細については、*IAM ユーザーガイド*の[IAM ユーザーのアクセス許可の変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)を参照してください。

# ETL ジョブに必要な IAM アクセス許可を確認する
<a name="getting-started-min-privs-job"></a>

AWS Glue Studio を使用してジョブを作成する場合、ジョブは作成時に指定する IAM ロールのアクセス許可を引き継ぎます。この IAMロール には、データソースからデータを抽出し、ターゲットにデータを書き込み、AWS Glue リソースにアクセスするためのアクセス許可が必要です。

`AWSGlueServiceRole` で正しく使用するには、ジョブ用に作成するロールの名前が「AWS Glue Studio」の文字列で始まる必要があります。例えば、ロール `AWSGlueServiceRole-FlightDataJob` に名前を付けることができます。

## データソースとデータターゲットのアクセス許可
<a name="getting-started-min-privs-data"></a>

AWS Glue Studio ジョブでは使用するすべてのソース、ターゲット、スクリプト、一時ディレクトリに対して Amazon S3 にアクセスできる必要があります。特定の Amazon S3 リソースにきめ細かいアクセス許可を付与するポリシーを作成できます。
+ データソースには、`s3:ListBucket` および `s3:GetObject` アクセス許可が必要です。
+ データターゲットには、`s3:ListBucket`、`s3:PutObject`、`s3:DeleteObject` アクセス許可が必要です。

**注記**  
 IAM ポリシーは、AWS Glue 変換のホストに使用される特定のバケットのために `s3:GetObject` を許可する必要があります。  
 次のバケットは AWS サービスアカウントによって所有されており、世界中で読み取り可能です。これらのバケットは、AWS Glue Studio ビジュアルエディタを介してアクセス可能な変換のサブセットに関連するソースコードのリポジトリとして機能します。バケットのアクセス許可は、バケットのその他の API アクションを拒否するように設定されます。変換用に提供しているこれらのスクリプトは誰でも読むことができますが、サービスチーム外のユーザーはその中に何も「入力」することができません。AWS Glue ジョブが実行されると、そのファイルはローカルインポートとしてプルされるため、ファイルはローカルコンテナにダウンロードされます。その後、そのアカウントとの通信はそれ以上行われません。

 リージョン: バケット名 
+ af-south-1: aws-glue-studio-transforms-762339736633-prod-af-south-1
+ ap-east-1: aws-glue-studio-transforms-125979764932-prod-ap-east-1
+ ap-northeast-2: aws-glue-studio-transforms-673535381443-prod-ap-northeast-2
+ ap-northeast-3: aws-glue-studio-transforms-149976050262-prod-ap-northeast-3
+ ap-south-1: aws-glue-studio-transforms-584702181950-prod-ap-south-1
+ ap-south-2: aws-glue-studio-transforms-380279651983-prod-ap-south-2
+ ap-southeast-1: aws-glue-studio-transforms-737106620487-prod-ap-southeast-1
+ ap-southeast-2: aws-glue-studio-transforms-234881715811-prod-ap-southeast-2
+ ap-southeast-3: aws-glue-studio-transforms-151265630221-prod-ap-southeast-3
+ ap-southeast-4: aws-glue-studio-transforms-052235663858-prod-ap-southeast-4
+ ca-central-1: aws-glue-studio-transforms-622716468547-prod-ca-central-1
+ ca-west-1: aws-glue-studio-transforms-915795495192-prod-ca-west-1
+ eu-central-1: aws-glue-studio-transforms-560373232017-prod-eu-central-1
+ eu-central-2: aws-glue-studio-transforms-907358657121-prod-eu-central-2
+ eu-north-1: aws-glue-studio-transforms-312557305497-prod-eu-north-1
+ eu-south-1: aws-glue-studio-transforms-939684186351-prod-eu-south-1
+ eu-south-2: aws-glue-studio-transforms-239737454084-prod-eu-south-2
+ eu-west-1: aws-glue-studio-transforms-244479516193-prod-eu-west-1
+ eu-west-2: aws-glue-studio-transforms-804222392271-prod-eu-west-2
+ eu-west-3: aws-glue-studio-transforms-371299348807-prod-eu-west-3
+ il-central-1: aws-glue-studio-transforms-806964611811-prod-il-central-1
+ me-central-1: aws-glue-studio-transforms-733304270342-prod-me-central-1
+ me-south-1: aws-glue-studio-transforms-112120182341-prod-me-south-1
+ sa-east-1: aws-glue-studio-transforms-881619130292-prod-sa-east-1
+ us-east-1: aws-glue-studio-transforms-510798373988-prod-us-east-1
+ us-east-2: aws-glue-studio-transforms-251189692203-prod-us-east-2
+ us-west-1: aws-glue-studio-transforms-593230150239-prod-us-west-1
+ us-west-2: aws-glue-studio-transforms-818035625594-prod-us-west-2
+ ap-northeast-1: aws-glue-studio-transforms-200493242866-prod-ap-northeast-1
+ cn-north-1: aws-glue-studio-transforms-071033555442-prod-cn-north-1
+ cn-northwest-1: aws-glue-studio-transforms-070947029561-prod-cn-northwest-1
+ us-gov-west-1: aws-glue-studio-transforms-227493901923-prod-us-gov-west-1-2604
+ eusc-de-east-1: aws-glue-studio-transforms-780995497573-prod-eusc-de-east-1-555

データソースとして Amazon Redshift を選択した場合は、クラスターのアクセス許可のロールを指定できます。Amazon Redshift クラスターに対して実行されるジョブが、一時的な認証情報を使用して一時的なストレージとして Amazon S3 にアクセスするコマンドを発行します。ジョブが 1 時間を超えて実行されると、これらの認証情報が期限切れになり、ジョブが失敗します。この問題を回避するために、一時的な認証情報を使用してジョブに必要なアクセス許可を付与するロールを Amazon Redshift クラスター自体に割り当てることができます。詳細については、「*AWS Glue デベロッパーガイド*」から「[Moving Data to and from Amazon Redshift](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html)」を参照してください。

ジョブで Amazon S3 以外のデータソースまたはターゲットを使用する場合は、これらのデータソースおよびターゲットにアクセスするために、ジョブで使用される IAM ロールに必要なアクセス許可をアタッチする必要があります。詳細については、「*AWS Glue デベロッパーガイド*」の「[Setting Up Your Environment to Access Data Stores](https://docs.aws.amazon.com/glue/latest/dg/start-connecting.html)」を参照してください。

データストアでコネクタと接続を使用している場合は、追加のアクセス許可が必要です。詳細については、[コネクタの使用に必要なアクセス許可](#getting-started-min-privs-connectors) をご覧ください。

## ジョブの削除に必要なアクセス許可
<a name="getting-started-min-privs-delete-job"></a>

AWS Glue Studio では、コンソールで複数のジョブを選択して削除できます。このアクションを実行するには、`glue:BatchDeleteJob` アクセス許可が必要です。これは、ジョブを削除するために `glue:DeleteJob` のアクセス許可を必要とする AWS Glue コンソールとは異なります。

## AWS Key Management Service アクセス許可
<a name="getting-started-min-privs-kms"></a>

AWS Key Management Service (AWS KMS) でサーバー側の暗号化を使用する Amazon S3 ソースとターゲットにアクセスする場合は、ジョブが使用する AWS Glue Studio ロールにポリシーをアタッチして、ジョブがデータを復号化できるようにします。ジョブロールには、`kms:ReEncrypt`、`kms:GenerateDataKey`、`kms:DescribeKey` のアクセス許可が必要です。さらに、ジョブロールには、AWS KMS カスタマーマスターキー（CMK）で暗号化された Amazon S3 オブジェクトをアップロードまたはダウンロードするための `kms:Decrypt` アクセス許可が必要です。　

AWS KMS CMK を使用するための追加料金はがかかります。詳細については、「[AWS Key Management Service デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)」の 「[AWS Key Management Service の概念 - カスタマーマスターキー (CMK)](https://aws.amazon.com/kms/pricing)」および 「*AWS Key Management Service の料金*」を参照してください。

## コネクタの使用に必要なアクセス許可
<a name="getting-started-min-privs-connectors"></a>

AWS Glue カスタムコネクタと接続を使用してデータストアにアクセスしている場合、AWS Glue ETL ジョブの実行に使用されるロールには、追加のアクセス許可がアタッチされている必要があります。
+ AWS Marketplace から購入したコネクタにアクセスするための AWS マネージドポリシー `AmazonEC2ContainerRegistryReadOnly`。
+ `glue:GetJob` および `glue:GetJobs` アクセス許可。
+ 接続で使用されるシークレットにアクセスするための AWS Secrets Manager アクセス許可。IAM ポリシーのサンプルについては、「[例: シークレット値を取得するアクセス許可](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_read)」を参照してください。

AWS Glue ETL ジョブが Amazon VPC を実行中の VPC 内で実行される場合、VPC は [ETL ジョブの VPC を設定します](getting-started-vpc-config.md) で説明されているように設定する必要があります。

# AWS Glue Studio に対する IAM のアクセス許可の設定
<a name="getting-started-iam-permissions"></a>

AWS 管理者ユーザーを使用して、ロールを作成し、ユーザーとジョブロールにポリシーを割り当てることができます。

**AWSGlueConsoleFullAccess** AWS マネージドポリシーを使用すると、AWS Glue Studio コンソールを使用するために必要なパーミッションを提供することができます。

独自のポリシーを作成するには、「*AWS Glueデベロッパーガイド*」の「[Create an IAM Policy for the AWS Glue Service](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html)」に従ってください。[AWS Glue Studio ユーザーに必要な IAM アクセスアクセス許可を確認します](getting-started-min-privs.md) で前述の IAM アクセス許可を含めます。

**Topics**
+ [AWS Glue Studio ユーザーにポリシーを添付する。](#attach-iam-policy)
+ [「AWSGlueServiceRole\$1」 という名前ではないロールの IAM ポリシーを作成します。](#create-iam-policy)

## AWS Glue Studio ユーザーにポリシーを添付する。
<a name="attach-iam-policy"></a>

AWS コンソールにサインインする AWS Glue Studio ユーザーは、特定のリソースへのアクセス権限が必要です。IAM ポリシーをユーザーに割り当てることで、これらの権限を提供します。

**ユーザーに **AWSGlueConsoleFullAccess** マネージドポリシーをアタッチするには**

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

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

1. ポリシーのリストで、[**AWSGlueConsoleFullAccess**] ポリシーの横にあるチェックボックスを選択します。[**Filter (フィルター)**] メニューと検索ボックスを使用して、ポリシーのリストをフィルタリングできます。

1. [**Policy actions**] を選択して、[**Attach**] を選択します。

1. ポリシーをアタッチするユーザーを選択します。[**Filter**] メニューと検索ボックスを使用して、プリンシパルエンティティのリストをフィルタリングできます。ポリシーをアタッチするユーザーを選択し、[**ポリシーのアタッチ**] を選択します。

1. 必要に応じて前の手順を繰り返し、ユーザーに追加のポリシーをアタッチします。

## 「AWSGlueServiceRole\$1」 という名前ではないロールの IAM ポリシーを作成します。
<a name="create-iam-policy"></a>

**AWS Glue Studio で使用されるロールの IAM ポリシーを設定する方法**

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

1. 新しい IAM ポリシーを追加します。既存のポリシーに追加するか、新しい IAM インラインポリシーを作成できます。IAM ポリシーを作成するには

   1. [**Policies**] を選択してから、[**Create Policy**] を選択します [**ご利用開始にあたって**] ボタンが表示されたら、そのボタンを選択して、[**ポリシーの作成**] を選択します。

   1. [**独自のポリシーを作成**] の横で、[**選択**] を選択します。

   1. [**ポリシー名**] に、後で参照しやすい任意の値を入力します。オプションとして、[**説明**] に説明のテキストを入力します。

   1. [**ポリシードキュメント**] に、以下の形式のポリシーステートメントを入力してから、[**ポリシーの作成**] を選択します。

1. 次のブロックをコピーして、[構文] 配列の下のポリシーに貼り付け、*my-interactive-session-role-prefix* を、AWS Glue のアクセス許可に関連付けるすべての一般的なロールのプレフィックスに置き換えます。

   ```
   {
       "Action": [
           "iam:PassRole"
       ],
       "Effect": "Allow",
       "Resource": "arn:aws:iam::*:role/my-interactive-session-role-prefix*",
       "Condition": {
           "StringLike": {
               "iam:PassedToService": [
                   "glue.amazonaws.com "
               ]
           }
       }
   }
   ```

    ポリシーに含まれる、[Version ] (バージョン) 配列と [Statement] (ステートメント) 配列の完全な例を以下に示します。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Action": [
           "iam:PassRole"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:iam::*:role/my-interactive-session-role-prefix*",
         "Condition": {
           "StringLike": {
             "iam:PassedToService": [
               "glue.amazonaws.com "
             ]
           }
         }
       }
     ]
   }
   ```

------

1. ユーザーのポリシーを有効にするには、[**ユーザー**] を選択します。

1. ポリシーをアタッチする ユーザーを選択します。

# ETL ジョブの VPC を設定します
<a name="getting-started-vpc-config"></a>

Amazon Virtual Private Cloud (Amazon VPC) を使用すると、AWS クラウド 内の論理的に分離された独自の領域に仮想プライベートクラウド (VPC) と呼ばれる仮想ネットワークを定義できます。AWS のリソース (インスタンスなど) を VPC 内部で起動できます。VPC は、お客様自身のデータセンターで運用されている従来のネットワークによく似ていますが、 のスケーラブルなインフラストラクチャを使用できるというメリットがありますAWS お客様の VPC はお客様が設定できます。IP アドレスレンジの選択、サブネットの作成、ルートテーブル、ネットワークゲートウェイ、セキュリティの設定ができます。VPC のインスタンスをインターネットに接続できます。VPC を自社のデータセンターに接続し、AWS クラウド をデータセンターの拡張部分として使用できます。各サブネットでのリソースの保護には、セキュリティグループ、ネットワークアクセスコントロールリストなど、複数のセキュリティレイヤーを使用できます。詳細については、[Amazon VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/)を参照してください。

コネクタを使用するときに、AWS Glue ETL ジョブをVPC 内で実行するように設定できます。必要に応じて、次のように VPC を設定する必要があります。
+ AWS にないデータストア用のパブリックネットワークアクセス。ジョブによってアクセスされるすべてのデータストアは、VPC サブネットから使用できる必要があります。
+ ジョブが VPC リソースとパブリックインターネットの両方にアクセスする必要がある場合は、 VPC 内にネットワークアドレス変換 (NAT) ゲートウェイが必要になります。

  詳細については、*AWS Glue デベロッパーガイド*の「[Setting Up Your Environment to Access Data Stores](https://docs.aws.amazon.com/glue/latest/dg/start-connecting.html)」を参照してください。

# AWS Glue Studio 中でのノートブックの使用開始
<a name="notebook-getting-started"></a>

 AWS Glue Studio を通してノートブックをスタートすると、ほんの数秒後にデータを調査し、ジョブスクリプトの開発を開始できるように、すべての設定ステップが実行されます。

 以下のセクションでは、AWS Glue Studio で ETL ジョブのノートブックを使用するために、ロールを作成し、適切なアクセス許可を付与する方法について説明します。

 AWS Glue で定義されたアクションの詳細については、「[AWS Glue で定義されたアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsglue.html)」を参照してください。

**Topics**
+ [IAM ロールに対するアクセス許可の付与](#studio-notebook-permissions)

## IAM ロールに対するアクセス許可の付与
<a name="studio-notebook-permissions"></a>

 ノートブックを使用するには、AWS Glue Studio のセットアップが事前に必要です。

AWS Glue でノートブックを使用するには、ロールに次のものが必要です。
+  `sts:AssumeRole` アクションに対する AWS Glue との信頼関係。タグ付けが必要な場合は `sts:TagSession`。
+  ノートブック、AWS Glue、インタラクティブセッションのすべての許可を含む IAM ポリシー。
+  PassRole の IAM ポリシー (ロールがノートブックからインタラクティブセッションに渡されるようにする必要があるため)。

 例えば、新しいロールを作成するときに、`AWSGlueConsoleFullAccessRole` などの標準の AWS 管理ポリシーをロールに追加して、ノートブックのオペレーション用と IAM PassRole ポリシー用にそれぞれ新しいポリシーを追加できます。

### AWS Glue との信頼関係に必要なアクション
<a name="create-notebook-permissions-trust"></a>

 ノートブックセッションを開始する際に、ノートブックに渡されるロールの信頼関係に `sts:AssumeRole` を追加する必要があります。セッションにタグが含まれている場合は、`sts:TagSession` アクションも渡す必要があります。これらのアクションがないと、ノートブックセッションを開始できません。

 例えば、次のようになります。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "glue.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

### ノートブックの IAM 許可を含むポリシー
<a name="create-notebook-permissions-operations"></a>

 次のサンプルポリシーで、ノートブックに必要な AWS IAM 権限について説明します。新しいロールを作成する場合は、以下を含むポリシーを作成します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StartNotebook",
        "glue:TerminateNotebook",
        "glue:GlueNotebookRefreshCredentials",
        "glue:DeregisterDataPreview",
        "glue:GetNotebookInstanceStatus",
        "glue:GlueNotebookAuthorize"
      ],
      "Resource": "*"
    }
  ]
}
```

------

 次の IAM ポリシーを使用して、特定のリソースへのアクセスを許可できます。
+  *AwsGlueSessionUserRestrictedNotebookServiceRole*: セッションを除くすべての AWS Glue リソースへのフルアクセス権限を提供します。ユーザーが、ユーザーに関連付けられているノートブックセッションのみを作成して使用できるようにします。このポリシーには、AWS Glue が他の AWS サービスで AWS Glue リソースを管理するために必要な他のアクセス許可も含まれています。
+  *AwsGlueSessionUserRestrictedNotebookPolicy*: ユーザー自身に関連付けられているノートブックセッションのみを作成および使用できるようにするアクセス許可を提供します。このポリシーには、ユーザーが制限付き AWS Glue セッションロールを渡すことを明示的に許可するアクセス許可も含まれます。

### ロールを渡すための IAM ポリシー
<a name="create-notebook-permissions-pass-role"></a>

 ロールを使用してノートブックを作成すると、そのロールがインタラクティブセッションに渡され、その両方で同じロールを使用できるようになります。このように、`iam:PassRole` のアクセス許可がロールのポリシーの一部として必要です。

 次の例を使用して、ロール用の新しいポリシーを作成します。アカウント番号とロール名を自分のものに置き換えます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/<role_name>"
    }
  ]
}
```

------

# AWS Glue 使用状況プロファイルの設定
<a name="start-usage-profiles"></a>

クラウドプラットフォームを使用する主な利点の 1 つは、その柔軟性です。ただし、コンピューティングリソースの作成が容易であるため、管理対象外のままにしてガードレールなしで放置すると、クラウドコストが螺旋するリスクがあります。その結果、管理者は、インフラストラクチャコストの増加を回避しながら、ユーザーが不要なわずらわしさなく作業できるようにバランスを取る必要があります。

AWS Glue 使用ファイルを用いて、管理者は、デベロッパー、テスター、製品チームなど、アカウント内のさまざまなクラスのユーザーの異なったプロファイルを作成できます。各プロファイルは、さまざまなタイプのユーザーに割り当てることができるパラメータの一意のセットです。例えば、デベロッパーはより多くのワーカーを必要とし、最大ワーカー数を増やすことができますが、製品チームに必要なワーカーは少なく、タイムアウトやアイドルタイムアウトの値は低くなります。

**ジョブとジョブ実行の動作の例**  
ジョブがプロファイル A を持つユーザー A によって作成されたとします。ジョブは特定のパラメータ値で保存されます。プロファイル B のユーザー B はジョブの実行を試みます。

ユーザー A がジョブを作成したときに、特定の数のワーカーを設定しなかった場合、ユーザー A のプロファイルのデフォルトセットが適用され、ジョブの定義とともに保存されました。

ユーザー B がジョブを実行すると、そのジョブに保存された値とともに実行されます。ユーザー B の独自のプロファイルがより制限されており、その数のワーカーで実行することが許可されていない場合、ジョブの実行は失敗します。

**リソースとしての使用状況プロファイル**  
AWS Glue 使用状況プロファイルは、Amazon リソースネーム (ARN) によって識別されるリソースです。アクションベースおよびリソースベースの承認を含む、すべてのデフォルトの IAM (アイデンティティとアクセス管理) コントロールが適用されます。管理者は、AWS Glue リソースを作成するユーザーの IAM ポリシーを更新し、プロファイルを使用するアクセスを許可する必要があります。

![\[AWS Glue で設定された使用プロファイルの例。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/usage-profiles-1.png)


**Topics**
+ [使用プロファイルの作成と管理](start-usage-profiles-managing.md)
+ [使用プロファイルとジョブ](start-usage-profiles-jobs.md)

# 使用プロファイルの作成と管理
<a name="start-usage-profiles-managing"></a>

## AWS Glue 使用プロファイルの作成
<a name="w2aac15c15c19b3"></a>

管理者は使用プロファイルを作成し、さまざまなユーザーに割り当てる必要があります。使用プロファイルを作成するときは、デフォルト値と、さまざまなジョブおよびセッションパラメータに許可される範囲の値を指定してください。ジョブまたはインタラクティブセッションには、少なくとも 1 つのパラメータを設定する必要があります。ジョブにパラメータ値が指定されていない場合、使用するデフォルト値をカスタマイズすることができます。また、このプロファイルを使用するときにユーザーがパラメータ値を指定した場合、範囲の制限または検証に許可される値のセットを設定することができます。

デフォルトは、管理者がジョブの作成者を支援するために設定したベストプラクティスです。ユーザーが新しいジョブを作成し、タイムアウト値を設定しない場合は、使用プロファイルのデフォルトのタイムアウトが適用されます。作成者にプロファイルがない場合、AWS Glue サービスのデフォルトが適用され、ジョブの定義に保存されます。ランタイム時には、AWS Glue はプロファイルに設定された制限 (最小、最大、許可されたワーカー) を適用します。

 パラメータは一度設定すると、他のすべてのパラメータは任意となります。ジョブまたはインタラクティブセッション用にカスタマイズできるパラメータは次のとおりです。
+  **ワーカーの数** - コンピューティングリソースの過剰な使用を避けるため、ワーカー数を制限します。デフォルト値、最小値、最大値を設定できます。最小値は 1 です。
+  **ワーカータイプ** - ワークロードに関連するワーカータイプを制限します。デフォルトのタイプを設定し、ユーザープロファイルのワーカータイプを許可できます。
+  **タイムアウト** - ジョブまたはインタラクティブセッションが終了する前にリソースを実行および消費できる最大時間を定義します。ジョブの長時間実行を避けるためにタイムアウト値をセットアップします。

  デフォルト値、最小値、最大値を分単位で設定できます。最小値は1 (分) です。AWS Glue デフォルトのタイムアウトは 2,880 分ですが、使用プロファイルで任意のデフォルト値を設定できます。

  「デフォルト」の値を設定するのがベストプラクティスです。ユーザーが値を設定しなかった場合、この値がジョブまたはセッションの作成に使用されます。
+  **アイドルタイムアウト** - セルの実行後からタイムアウトするまでにインタラクティブセッションが非アクティブ状態である分数を定義します。作業の完了後、インタラクティブセッション終了のアイドルタイムアウトを定義します。アイドルタイムアウトの範囲は、タイムアウトの制限内である必要があります。

  デフォルト値、最小値、最大値を分単位で設定できます。最小値は1 (分) です。AWS Glue デフォルトのタイムアウトは 2,880 分ですが、使用プロファイルで任意のデフォルト値を設定できます。

  「デフォルト」の値を設定するのがベストプラクティスです。ユーザーが値を設定しなかった場合に、この値がセッションの作成に使用されます。

**管理者として AWS Glue 使用プロファイルを作成するには (コンソール)**

1. 左側のナビゲーションメニューで **[コスト管理]** を選択します。

1. **[使用プロファイルの作成]** を選択します。

1. 使用プロファイルの **[使用プロファイル名]** を入力します。

1. 他のユーザーが使用プロファイルの目的を認識できるようなオプションの説明を入力します。

1. プロファイルのパラメータのうち少なくとも 1 つを定義します。フォーム内のどのフィールドもパラメータフィールドです。例えば、最小セッションアイドルタイムアウト値です。

1. 使用プロファイルに適用される任意のタグを定義します。

1. **[保存]** を選択します。  
![\[AWS Glue で使用プロファイルを作成する管理者の例。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/usage-profiles-2-create.png)

**使用プロファイルを作成するには (AWS CLI)**

1. 次のコマンドを入力します。

   ```
   aws glue create-usage-profile --name profile-name --configuration file://config.json --tags list-of-tags
   ```

   ここでは、config.json はインタラクティブセッション (`SessionConfiguration`) とジョブ (`JobConfiguration`) のパラメータ値を定義できます。

   ```
   //config.json (There is a separate blob for session/job configuration
   {
       "SessionConfiguration": {
           "timeout": {
               "DefaultValue": "2880",
               "MinValue": "100",
               "MaxValue": "4000"
           },
           "idleTimeout": {
               "DefaultValue": "30",
               "MinValue": "10",
               "MaxValue": "4000"
           },
           "workerType": {
               "DefaultValue": "G.2X",
               "AllowedValues": [
                   "G.1X",
                   "G.2X",
                   "G.4X",
                   "G.8X",
                   "G.12X",
                   "G.16X",
                   "R.1X",
                   "R.2X",
                   "R.4X",
                   "R.8X"
               ]
           },
           "numberOfWorkers": {
               "DefaultValue": "10",
               "MinValue": "1",
               "MaxValue": "10"
           }
       },
       "JobConfiguration": {
           "timeout": {
               "DefaultValue": "2880",
               "MinValue": "100",
               "MaxValue": "4000"
           },
           "workerType": {
               "DefaultValue": "G.2X",
               "AllowedValues": [
                   "G.1X",
                   "G.2X",
                   "G.4X",
                   "G.8X",
                   "G.12X",
                   "G.16X",
                   "R.1X",
                   "R.2X",
                   "R.4X",
                   "R.8X"
               ]
           },
           "numberOfWorkers": {
               "DefaultValue": "10",
               "MinValue": "1",
               "MaxValue": "10"
           }
       }
   }
   ```

1. 次のコマンドを入力すると、作成された使用プロファイルを確認できます。

   ```
   aws glue get-usage-profile --name profile-name
   ```

   レスポンスは以下のようになります。

   ```
   {
       "ProfileName": "foo",
       "Configuration": {
           "SessionConfiguration": {
               "numberOfWorkers": {
                   "DefaultValue": "10",
                   "MinValue": "1",
                   "MaxValue": "10"
               },
               "workerType": {
                   "DefaultValue": "G.2X",
                   "AllowedValues": [
                       "G.1X",
                       "G.2X",
                       "G.4X",
                       "G.8X",
                       "G.12X",
                       "G.16X",
                       "R.1X",
                       "R.2X",
                       "R.4X",
                       "R.8X"
                   ]
               },
               "timeout": {
                   "DefaultValue": "2880",
                   "MinValue": "100",
                   "MaxValue": "4000"
               },
               "idleTimeout": {
                   "DefaultValue": "30",
                   "MinValue": "10",
                   "MaxValue": "4000"
               }
           },
           "JobConfiguration": {
               "numberOfWorkers": {
                   "DefaultValue": "10",
                   "MinValue": "1",
                   "MaxValue": "10"
               },
               "workerType": {
                   "DefaultValue": "G.2X",
                   "AllowedValues": [
                       "G.1X",
                       "G.2X",
                       "G.4X",
                       "G.8X",
                       "G.12X",
                       "G.16X",
                       "R.1X",
                       "R.2X",
                       "R.4X",
                       "R.8X"
                   ]
               },
               "timeout": {
                   "DefaultValue": "2880",
                   "MinValue": "100",
                   "MaxValue": "4000"
               }
           }
       },
       "CreatedOn": "2024-01-19T23:15:24.542000+00:00"
   }
   ```

使用プロファイルの管理に使用される追加 CLI コマンド:
+ aws glue list-usage-profiles
+ aws glue update-usage-profile --name *profile-name* --configuration *file://config.json*
+ aws glue delete-usage-profile --name *profile-name*

## 使用プロファイルの編集
<a name="w2aac15c15c19b5"></a>

管理者は、作成した使用プロファイルを編集して、ジョブとインタラクティブセッションのプロファイルパラメータ値を変更できます。

使用プロファイルを編集するには:

**管理者として AWS Glue 使用プロファイルを編集するには (コンソール)**

1. 左側のナビゲーションメニューで **[コスト管理]** を選択します。

1. 編集する権限を持つ使用プロファイルを選択し、**[編集]** を選択します。

1. 必要に応じてプロファイルを変更します。デフォルトでは、すでに値を持つパラメータは展開されます。

1. **[編集を保存]** を選択します。  
![\[AWS Glue の使用プロファイルを編集するユーザーの例。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/usage-profiles-4-edit.png)

**使用プロファイルを編集するには (AWS CLI)**
+ 次のコマンドを入力します。上記の create コマンドと同じ `--configuration` ファイル構文が使用されます。

  ```
  aws glue update-usage-profile --name profile-name --configuration file://config.json
  ```

  ここで、config.json はインタラクティブセッション (`SessionConfiguration`) とジョブ (`JobConfiguration`) のパラメータ値を定義します。

## 使用プロファイルの割り当て
<a name="w2aac15c15c19b7"></a>

**[使用プロファイル]** ページの **[使用ステータス]** 列には、使用プロファイルがユーザーに割り当てられているかどうかが表示されます。ステータスにカーソルを合わせると、割り当てられた IAM エンティティが表示されます。

管理者は、AWS Glue リソースを作成するユーザー/ロールに AWS Glue 使用プロファイルを割り当てることができます。プロファイルの割り当てとは、2 つのアクションの組み合わせです:
+ IAM ユーザー/ロールタグを `glue:UsageProfile` キーで更新し、その後に
+ ユーザー/ロールの IAM ポリシーを更新。

AWS Glue Studio を使用してジョブ/インタラクティブセッションを作成するユーザーの場合、管理者は次のロールにタグを付けます:
+ ジョブの制限については、管理者はログインしたコンソールロールにタグを付けます
+ インタラクティブセッションの制限については、管理者はノートブックの作成時にユーザーが提供するロールにタグを付けます

AWS Glue リソースを作成する IAM ユーザー/ロールで管理者が更新する必要があるポリシーの例を次に示します:

```
{
    "Effect": "Allow",
    "Action": [
        "glue:GetUsageProfile"
    ],
    "Resource": [
        "arn:aws:glue:us-east-1:123456789012:usageProfile/foo"
    ]
}
```

AWS Glue は、AWS Glue 使用プロファイルで指定された値に基づいてジョブ、ジョブ実行、およびセッションリクエストを検証し、リクエストが許可されていない場合は例外を発生させます。同期 API の場合、エラーがユーザーにスローされます。非同期パスの場合、失敗したジョブ実行は、入力パラメータがユーザー/ロールに割り当てられたプロファイルの許容範囲外であるというエラーメッセージで作成されます。

使用プロファイルをユーザー/ロールに割り当てるには:

1. IAM (Identity and Access Management) コンソールを開きます。

1. ナビゲーションペインで、**[ユーザー]** または **[ロール]** を選択します。

1. ユーザーまたはロールを選択します。

1. **[タグ]** タブを選択します。

1. **[新しいタグを追加]** をクリックします。

1. **[キー]** が `glue:UsageProfile`、**[値]** が使用プロファイルの名前になっているタグを追加します。

1. **[変更を保存]** を選択します。  
![\[IAM ロールにタグを追加する例。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/usage-profiles-iam-role-tagged.png)

## 割り当てられた使用プロファイルを表示
<a name="w2aac15c15c19b9"></a>

ユーザーは割り当てられた使用プロファイルを表示できるほか、使用プロファイルを使って、API コールを行って AWS Glue ジョブやセッションリソースを作成したり、ジョブを開始したりできます。

プロファイルのアクセス許可は IAM ポリシーで提供されます。発信者ポリシーに `glue:UsageProfile` のアクセス許可がある限り、ユーザーはプロファイルを表示できます。それ以外の場合は「アクセス拒否」というエラーが表示されます。

割り当てられた使用プロファイルを表示するには:

1. 左側のナビゲーションメニューで **[コスト管理]** を選択します。

1. 表示するアクセス許可がある使用プロファイルを選択します。

![\[AWS Glue で割り当てられた使用プロファイルを表示するユーザーの例。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/usage-profiles-3-view.png)


# 使用プロファイルとジョブ
<a name="start-usage-profiles-jobs"></a>

## 使用プロファイルでジョブの作成
<a name="w2aac15c15c21b3"></a>

ジョブの作成中に、使用プロファイルで設定された制限とデフォルトが適用されます。プロファイルは保存時にジョブに割り当てられます。

## 使用プロファイルでジョブの実行
<a name="w2aac15c15c21b5"></a>

ジョブの実行を開始すると、AWS Glue は発信者のプロファイルに設定された制限を適用します。直接発信者がいない場合、Glue は作成者によってジョブに割り当てられたプロファイルの制限を適用します。

**注記**  
ジョブがスケジュールに従って実行されると (AWS Glue ワークフローまたは AWS Glue トリガーによる)、作成者がジョブに割り当てたプロファイルが適用されます。  
外部サービス (Step Functions、MWAA) または `StartJobRun` API によってジョブが実行されると、発信者のプロファイル制限が適用されます。

AWS Glue ワークフローまたは AWS Glue トリガーの場合: プロファイルの制限 (最小、最大、および許可されたワーカー) がランタイムでスケジュールされた実行が適用されるために、既存のジョブを更新して新しいプロファイル名を保存する必要があります。

## ジョブに割り当てられた使用プロファイルを表示
<a name="w2aac15c15c21b7"></a>

ジョブに割り当てられたプロファイル (スケジュールされた AWS Glue ワークフローまたは AWS Glue トリガーでのランタイムに使用される) を表示するには、ジョブの **[詳細]** タブを確認してください。ジョブ実行の詳細タブで、過去の実行で使用されたプロファイルを確認することもできます。

## ジョブにアタッチされた使用プロファイルの更新または削除
<a name="w2aac15c15c21b9"></a>

ジョブに割り当てられたプロファイルは、更新時に変更されます。作成者に使用プロファイルが割り当てられていない場合、ジョブにアタッチされたプロファイルはすべてそこから削除されます。

# AWS Glue Data Catalog の開始方法
<a name="start-data-catalog"></a>

 AWS Glue Data Catalog は永続的な技術メタデータストアです。AWS クラウドでメタデータを保存、注釈付け、および共有するために使用することができるマネージド型サービスです。詳細については、「[AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro)」を参照してください。


|  | 
| --- |
| AWS Glue コンソールおよび一部のユーザーインターフェイスが最近更新されました。 | 

## 概要:
<a name="start-data-catalog-overview"></a>

 このチュートリアルを使用して、最初の AWS Glue データカタログを作成できます。このデータカタログは、データソースとして Simple Storage Service (Amazon S3) バケットを使用します。

 このチュートリアルでは、AWS Glue コンソールを使用して以下の作業を行います。

1.  データベースの作成 

1.  テーブルを作成する 

1.  データソースとして Amazon S3 バケットを使用します。

 これらのステップを完了すると、データソースとして Amazon S3 バケットを使用して、AWS Glue データカタログにデータを入力できるようになります。

## ステップ 1: データベースを作成する
<a name="start-data-catalog-database"></a>

 開始するには、AWS マネジメントコンソール にサインインして [AWS Glue コンソール](https://console.aws.amazon.com/glue) を開きます。

 **AWS Glue コンソールを使用してデータベースを作成する:** 

1.  AWS Glue コンソールで、左側のメニューにある **[Data catalog]** (データカタログ) から、 **[Databases]** (データベース) を選択します。

1.  **[Add database]** (データベースの追加) を選択します。

1.  [データベースの作成] ページで、データベースの名前を入力します。**[Location - optional]** セクションで、データカタログのクライアントが使用する URI の場所を設定します。これがわからない場合は、データベースの作成を続行してください。

1.  (オプション)。データベースの説明を入力します。

1.  **[データベースの作成]** を選択します。

 これで、AWS Glue コンソールで最初のデータベースの作成が終わりました。新しいデータベースが、使用可能なデータベースのリストに表示されます。データベースは、**[Databases]** (データベース) ダッシュボードからデータベースの名前を選択することで編集できます。

 **次のステップ** 

 **[Other ways to create a database: ]** (データベースを作成するその他の方法) 

 AWS Glue コンソールでデータベースを作成しましたが、データベースを作成する方法は他にもあります。
+ クローラーを使用して、データベースとテーブルを自動的に作成することができます。クローラーを使用してデータベースを設定するには、「[AWS Glue コンソールでクローラーを使用する](https://docs.aws.amazon.com/glue/latest/dg/console-crawlers.html)」を参照してください。
+  CloudFormation テンプレートを使用できます。「[AWS Glue リソースをAWS Glue Data Catalog テンプレートで作成する](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html)」を参照してください。
+  AWS Glue データベース API オペレーションを使用してデータベースを作成することもできます。

   `create` オペレーションを使用してデータベースを作成するには、`DatabaseInput` (必須) パラメータを含めてリクエストを構成します。

   例:   
****  
 CLI、Boto3、または DDL を使用して、チュートリアルで使用した S3 バケットからの同じ flights\$1data.csv ファイルに基づいてテーブルを定義する方法の一例を以下に示します。  

  ```
  aws glue create-database --database-input "{\"Name\":\"clidb\"}"                                              
  ```

  ```
  glueClient = boto3.client('glue')
  
  response = glueClient.create_database(
      DatabaseInput={
          'Name': 'boto3db'
      }
  )
  ```

 Database API のデータタイプ、構造、およびオペレーションの詳細については、「[データベース API](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-databases.html)」を参照してください。

 **次のステップ** 

 次のセクションでは、テーブルを作成し、そのテーブルをデータベースに追加します。

データカタログの設定とアクセス許可を確認することもできます。「[AWS Glue コンソールでデータカタログ設定を使用する](https://docs.aws.amazon.com/glue/latest/dg/console-data-catalog-settings.html)」を参照してください。

## ステップ 2。テーブルを作成する
<a name="start-data-catalog-table"></a>

 このステップでは、AWS Glue コンソールを使用してテーブルを作成します。

1.  AWS Glue コンソールで、左側のメニューにある**[Tables]** (テーブル) を選択します。

1.  [**Add table (テーブルの追加)**] を選択します。

1.  **[Table details]** (テーブルの詳細) でテーブルの名前を入力して、テーブルのプロパティを設定します。

1.  **[Databases]** (データベース) セクションのドロップダウンメニューから、ステップ 1 で作成したデータベースを選択します。

1.  **[Add a data store]** (データストアの追加) セクションのデフォルト状態では、ソースのタイプとして **[S3]** が選択されています。

1.  **[Data located in]** (データがある場所) で、**[Specified path in another account]** (他のアカウントの指定したパス) を選択します。

1. パスをコピーして、**[Include path]** (パスを含める) の入力フィールドに貼り付けます。

   `s3://crawler-public-us-west-2/flight/2016/csv/`

1.  **[Data format]** (データ形式) セクションにある **[Classification]** (分類) で **[CSV]** を選択し、**[Delimiter]** (区切り記号) では **[comma (,)]** (カンマ (,)) を選択します。[**次へ**] を選択します。

1. スキーマを定義するように求められます。スキーマ は、データレコードの構造と形式を定義します。**[Add column]** (列の追加) を選択します。(詳細については、「[スキーマレジストリ](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html#schema-registry-schemas.html)」を参照してください)。

1.  列のプロパティを指定します。

   1. 列名を入力します。

   1. **[Column type]** (列タイプ) の場合、デフォルトで 'string' が既に選択されています。

   1. **[Column number]** (列番号) の場合、デフォルトで '1' が既に選択されています。

   1. **[Add]** (追加) を選択します。

1.  パーティションインデックスを追加するように求められます。これはオプションです。このステップをスキップするには、**[Next]** (次へ) を選択します。

1.  テーブルプロパティのサマリーが表示されます。すべてが期待とおりに動作している場合、**[作成]** を選択します。それ以外の場合は、**[Back]** (戻る) を選択して、必要に応じて編集します。

 これで、テーブルを手動で作成し、データベースに関連付ける作業が完了しました。新しく作成したテーブルは [Tables] (テーブル) ダッシュボードに表示されます。ダッシュボードからは、すべてのテーブルの編集と管理を行うことができます。

 詳細については、「[AWS Glue コンソールでテーブルを操作する](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html)」を参照してください。

## 次のステップ
<a name="start-data-catalog-next-steps"></a>

 **次のステップ** 

 データカタログを入力した後は、AWS Glue でジョブの作成を開始できます。「[AWS Glue Studio でビジュアル ETL ジョブの作成](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html)」を参照してください。

 コンソールを使用する以外にも、データカタログでテーブルを定義する方法として、次のような方法があります。
+  [クローラーを作成して実行する](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) 
+  [AWS Glue のクローラーに分類子の追加](https://docs.aws.amazon.com/glue/latest/dg/add-classifier.html) 
+  [AWS Glue テーブル API を使用する](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html) 
+  [AWS Glue Data Catalog テンプレートを使用する](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html) 
+  [Apache Hive メタストアを移行する](https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/Hive_metastore_migration) 
+  [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/glue/create-table.html)、Boto3、またはデータ定義言語 (DDL) を使用する   
****  
 CLI、Boto3、または DDL を使用して、チュートリアルで使用した S3 バケットからの同じ flights\$1data.csv ファイルに基づいてテーブルを定義する方法の一例を以下に示します。  
 AWS CLI コマンドを構造化する方法については、ドキュメントを参照してください。CLI の例には、「aws glue create-table --table-input」値の JSON 構文が含まれています。  

  ```
  {
          "Name": "flights_data_cli",
          "StorageDescriptor": {
              "Columns": [
                  {
                      "Name": "year",
                      "Type": "bigint"
                  },
                  {
                      "Name": "quarter",
                      "Type": "bigint"
                  }
              ],
              "Location": "s3://crawler-public-us-west-2/flight/2016/csv",
              "InputFormat": "org.apache.hadoop.mapred.TextInputFormat",
              "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
              "Compressed": false,
              "NumberOfBuckets": -1,
              "SerdeInfo": {
                  "SerializationLibrary": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                  "Parameters": {
                      "field.delim": ",",
                      "serialization.format": ","
                  }
              }
          },
          "PartitionKeys": [
              {
                  "Name": "mon",
                  "Type": "string"
              }
          ],
          "TableType": "EXTERNAL_TABLE",
          "Parameters": {
              "EXTERNAL": "TRUE",
              "classification": "csv",
              "columnsOrdered": "true",
              "compressionType": "none",
              "delimiter": ",",
              "skip.header.line.count": "1",
              "typeOfData": "file"
          }
      }
  ```

  ```
  import boto3
  
  glue_client = boto3.client("glue")
  
  response = glue_client.create_table(
      DatabaseName='sampledb',
      TableInput={
          'Name': 'flights_data_manual',
      'StorageDescriptor': {
        'Columns': [{
          'Name': 'year',
          'Type': 'bigint'
        }, {
          'Name': 'quarter',
          'Type': 'bigint'
        }],
        'Location': 's3://crawler-public-us-west-2/flight/2016/csv',
        'InputFormat': 'org.apache.hadoop.mapred.TextInputFormat',
        'OutputFormat': 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat',
        'Compressed': False,
        'NumberOfBuckets': -1,
        'SerdeInfo': {
          'SerializationLibrary': 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe',
          'Parameters': {
            'field.delim': ',',
            'serialization.format': ','
          }
        },
      },
      'PartitionKeys': [{
        'Name': 'mon',
        'Type': 'string'
      }],
      'TableType': 'EXTERNAL_TABLE',
      'Parameters': {
        'EXTERNAL': 'TRUE',
        'classification': 'csv',
        'columnsOrdered': 'true',
        'compressionType': 'none',
        'delimiter': ',',
        'skip.header.line.count': '1',
        'typeOfData': 'file'
      }
      }
  )
  ```

  ```
  CREATE EXTERNAL TABLE `sampledb`.`flights_data` (
    `year` bigint, 
    `quarter` bigint)
  PARTITIONED BY ( 
    `mon` string)
  ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY ',' 
  STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
  OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
  LOCATION
    's3://crawler-public-us-west-2/flight/2016/csv/'
  TBLPROPERTIES (
    'classification'='csv', 
    'columnsOrdered'='true', 
    'compressionType'='none', 
    'delimiter'=',', 
    'skip.header.line.count'='1', 
    'typeOfData'='file')
  ```

# データストアへのネットワークアクセスを設定する
<a name="start-connecting"></a>

抽出、変換、ロード (ETL) ジョブを実行するには，AWS Glue がデータストアにアクセスできる必要があります。ジョブをVirtual Private Cloud (VPC) サブネットで実行する必要がない場合 (例えば、Amazon S3 から Amazon S3 へのデータ変換など)、追加の設定は必要ありません。

ジョブを VPC サブネットで実行する必要がある場合 (プライベートサブネット内の JDBC データストアからのデータの変換など)、AWS Glue は、ジョブを VPC 内の他のリソースに安全に接続できるようにする [Elastic Network Interfaces](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html) をセットアップします。それぞれの Elastic Network Interface には、指定したサブネット内の IP アドレス範囲からプライベート IP アドレスが割り当てられます。パブリック IP アドレスは割り当てられません。AWS Glue 接続で指定されたセキュリティグループは、各 Elastic Network Interface に適用されます。詳しくは、「[AWS Glue から Amazon RDS データストアに JDBC 接続するための Amazon VPC の設定](setup-vpc-for-glue-access.md)」を参照してください。

ジョブによってアクセスされるすべての JDBC データストアは、VPC サブネットから使用できる必要があります。VPC 内から Amazon S3 にアクセスするには [VPC エンドポイント](vpc-endpoints-s3.md) が必須です。ジョブが VPC リソースとパブリックインターネットの両方にアクセスする必要がある場合は、 VPC 内にネットワークアドレス変換 (NAT) ゲートウェイが必要になります。

 ジョブまたは開発エンドポイントは、一度に 1 つの VPC (およびサブネット) にのみアクセスできます。異なる VPC のデータストアにアクセスする必要がある場合は、次のオプションがあります。
+ VPC ピア接続を使用してデータストアにアクセスします。VPC ピア接続の詳細については、「[VPC ピア接続の基本](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-basics.html)」を参照してください。
+ 中間的なストレージとして Amazon S3 バケットを使用します。ジョブ 1 での Amazon S3 出力をジョブ 2 への入力としながら、作業を 2 つのジョブに分割します。

Amazon VPC を使用して Amazon Redshift データストアに接続する方法の詳細については、「[Redshift 接続の設定](aws-glue-programming-etl-connect-redshift-home.md#aws-glue-programming-etl-connect-redshift-configure)」を参照してください。

Amazon VPC を使用して Amazon RDS データストアに接続する方法の詳細については、「[AWS Glue から Amazon RDS データストアに JDBC 接続するための Amazon VPC の設定](setup-vpc-for-glue-access.md)」を参照してください。

Amazon VPC で必要なルールを設定したら、データストアに接続するために必要なプロパティを使用して、AWS Glue で接続を作成します。接続の詳細については、「[データへの接続](glue-connections.md)」を参照してください

**注記**  
AWS Glue の DNS 環境を必ず設定してください。詳細については、「[VPC での DNS のセットアップ](set-up-vpc-dns.md)」を参照してください。

**Topics**
+ [AWS Glue の PyPI に接続する VPC のセットアップ](setup-vpc-for-pypi.md)
+ [VPC での DNS のセットアップ](set-up-vpc-dns.md)

# AWS Glue の PyPI に接続する VPC のセットアップ
<a name="setup-vpc-for-pypi"></a>

Python Package Index (PyPI) は、Python プログラミング言語用のソフトウェアのリポジトリです。このトピックでは、(セッションの作成者が `--additional-python-modules` フラグを使用して指定した) pip インストールパッケージの使用をサポートするために必要な詳細について説明します。

コネクタで AWS Glue インタラクティブセッションを使用すると、コネクタに指定されたサブネット経由で VPC ネットワークが使用されます。そのため、特別な設定をセットアップしない限り、AWS サービスやその他のネットワーク送信先は使用できません。

この問題には、次のような解決策があります。
+ セッションからアクセス可能なインターネットゲートウェイの使用。
+ パッケージセットの依存関係の推移閉包を含む PyPI/simple リポジトリを使用した S3 バケットのセットアップと使用。
+ PyPI をミラーリングし、VPC にアタッチされている CodeArtifact リポジトリの使用。

## インターネットゲートウェイをセットアップする
<a name="setup-vpc-for-pypi-internet-gateway"></a>

技術面については、「[NAT ゲートウェイのユースケース](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-scenarios.html)」で詳しく説明していますが、`--additional-python-modules` を使用するには以下の要件に注意してください。具体的には、`--additional-python-modules` には、VPC の設定によって決まる pypi.org へのアクセス権が必要です。次の要件に注意してください。

1. ユーザーのセッションに追加の Python モジュールを pip インストール経由でインストールする要件。セッションがコネクタを使用する場合、設定が影響を受ける可能性があります。

1. `--additional-python-modules` でコネクタを使用している場合、セッションが開始されると、pypi.org に到達するためのネットワークパスがコネクタの `PhysicalConnectionRequirements` に関連付けられたサブネットで指定される必要があります。

1. 設定が正しいかどうかを判断する必要があります。

## ターゲット PyPI/simple リポジトリをホストする Amazon S3 バケットのセットアップ
<a name="setup-vpc-for-pypi-s3-bucket"></a>

この例では、Amazon S3 に一連のパッケージとその依存関係について PyPI のミラーリングをセットアップします。

一連のパッケージに PyPI のミラーリングを設定するには:

```
# pip download all the dependencies
pip download -d s3pypi --only-binary :all: plotly gglplot
pip download -d s3pypi --platform manylinux_2_17_x86_64 --only-binary :all: psycopg2-binary
# create and upload the pypi/simple index and wheel files to the s3 bucket
s3pypi -b test-domain-name --put-root-index -v s3pypi/*
```

既存のアーティファクトリポジトリがある場合は、pip 用のインデックス URL があります。これを、上記の Amazon S3 バケットのサンプル URL の代わりに指定できます。

カスタム index-url をいくつかのサンプルパッケージで使用するには:

```
%%configure
{
    "--additional-python-modules": "psycopg2_binary==2.9.5",
    "python-modules-installer-option": "--no-cache-dir --verbose --index-url https://test-domain-name.s3.amazonaws.com/ --trusted-host test-domain-name.s3.amazonaws.com"
}
```

## VPC にアタッチされた PyPI の CodeArtifact ミラーリングのセットアップ
<a name="setup-vpc-for-pypi-code-artifact"></a>

ミラーリングをセットアップするには:

1. コネクタが使用するサブネットと同じリージョンにリポジトリを作成します。

   [`Public upstream repositories`]、[`pypi-store`] の順に選択します。

1. サブネットの VPC からリポジトリにアクセスできるようにします。

1. `python-modules-installer-option` を使用して正しい `--index-url` を指定します。

   ```
   %%configure
   {
       "--additional-python-modules": "psycopg2_binary==2.9.5",
       "python-modules-installer-option": "--no-cache-dir --verbose --index-url https://test-domain-name.s3.amazonaws.com/ --trusted-host test-domain-name.s3.amazonaws.com"
   }
   ```

詳細については、「[VPC から CodeArtifact を使用する](https://docs.aws.amazon.com/codeartifact/latest/ug/use-codeartifact-from-vpc.html)」を参照してください。

# VPC での DNS のセットアップ
<a name="set-up-vpc-dns"></a>

ドメインネームシステム (DNS) は、インターネットで使用する名前を対応する IP アドレスに解決するための標準です。DNS ホスト名は、ホスト名とドメイン名で構成され、コンピュータに一意の名前を付けます。DNS サーバーは DNS ホスト名を対応する IP アドレスに解決します。

VPC で DNS をセットアップするには、DNS ホスト名と DNS 解決の両方が VPC で有効になっていることを確認します。VPC ネットワーク属性の `enableDnsHostnames` と `enableDnsSupport` を `true` に設定する必要があります。これらの属性を表示および変更するには、VPC コンソール ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) を開きます。

詳細については、「[Using DNS with Your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)」を参照してください。また、AWS CLI を使用して [modify-vpc-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-attribute.html) コマンドを実行し、VPC ネットワーク属性を設定することもできます。

**注記**  
Route 53 を使用している場合は、設定によって DNS ネットワーク属性が上書きされないようにする必要があります。

# AWS Glue での暗号化のセットアップ
<a name="set-up-encryption"></a>

次のワークフローの例では、AWS Glue で暗号化を使用するときに設定するオプションに注目します。この例では、特定の AWS Key Management Service (AWS KMS) キーの使用方法を示していますが、特定のニーズに基づいて他の設定を選択することもできます。このワークフローでは、AWS Glue の設定時に暗号化に関連するオプションのみをハイライト表示しています。

1. AWS Glue コンソールのユーザーがすべての AWS Glue API オペレーションを許可するアクセス許可ポリシー (例: `"glue:*"`) を使用しない場合は、次のアクションが許可されていることを確認してください。
   + `"glue:GetDataCatalogEncryptionSettings"`
   + `"glue:PutDataCatalogEncryptionSettings"`
   + `"glue:CreateSecurityConfiguration"`
   + `"glue:GetSecurityConfiguration"`
   + `"glue:GetSecurityConfigurations"`
   + `"glue:DeleteSecurityConfiguration"`

1. 暗号化されたカタログにアクセスまたは書き込みするクライアント (つまりコンソールユーザー、クローラー、ジョブ、開発エンドポイントなど) には、以下のアクセス許可が必要です。

1. 暗号化された接続パスワードにアクセスするユーザーまたはロールには、次のアクセス許可が必要です。

1. 暗号化されたデータを Amazon S3 に書き込む抽出、変換、ロード (ETL) ジョブのロールには、以下のアクセス許可が必要です。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Action": [
         "kms:Decrypt",
         "kms:Encrypt",
         "kms:GenerateDataKey"
       ],
       "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
     }
   }
   ```

------

1. 暗号化された Amazon CloudWatch Logs を書き込む ETL ジョブまたはクローラーでは、キーポリシーおよび IAM ポリシーに以下のアクセス許可が必要です。

   キーポリシー (IAM ポリシーではない) の場合:

   ```
   {
    	"Effect": "Allow",
    	"Principal": {
    		"Service": "logs.region.amazonaws.com"
    	},
    	"Action": [
    		"kms:Encrypt*",
    		"kms:Decrypt*",
    		"kms:ReEncrypt*",
    		"kms:GenerateDataKey*",
    		"kms:Describe*"
    	],
    	"Resource": "<arn of key used for ETL/crawler cloudwatch encryption>"
    }
   ```

   キーポリシーの詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[Using Key Policies in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

   `logs:AssociateKmsKey` 許可にアタッチする IAM ポリシーの場合:

   ```
   {
    	"Effect": "Allow",
    	"Principal": {
    		"Service": "logs.region.amazonaws.com"
    	},
    	"Action": [
    		"logs:AssociateKmsKey"
    	],
    	"Resource": "<arn of key used for ETL/crawler cloudwatch encryption>"
    }
   ```

1. 暗号化されたジョブのブックマークを使用する ETL ジョブには、次のアクセス許可が必要です。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Action": [
         "kms:Decrypt",
         "kms:Encrypt"
       ],
       "Resource": "arn:aws:kms:us-east-1:111122223333:key/*"
     }
   }
   ```

------

1. AWS Glue コンソールで、ナビゲーションペインの [**設定**] を選択します。

   1. [**Data catalog settings**] (データカタログ設定) ページで [**Metadata encryption**] (メタデータの暗号化) を選択し、Data Catalog を暗号化します。このオプションは、選択した AWS KMS キーを使用して、Data Catalog のすべてのオブジェクトを暗号化します。

   1.  [**AWS KMS key**] で、[**aws/glue**] を選択します。自身で作成した AWS KMS キーを選択することもできます。
**重要**  
AWS Glue は、対称カスタマーマスターキー (CMK) のみをサポートしています。[**AWS KMS key**] (KMS キー) リストには、対称キーのみが表示されます。ただし、[**Choose a AWS KMS key ARN**] (KMS キー ARN を選択します) を選択した場合、任意のキータイプの ARN をコンソールで入力します。対称キーには ARN だけを入力するようにしてください。

   暗号化が有効になっている場合、Data Catalog にアクセスするクライアントには、AWS KMS のアクセス許可が付与されている必要があります。

1. ナビゲーションペインで、[**セキュリティ設定**] を選択します。セキュリティ設定は、AWS Glue プロセスを設定するために使用できるセキュリティプロパティのセットです。次に [**セキュリティ設定の追加**] を選択します。設定で、次のオプションのいずれかを選択します。

   1. [**S3 暗号化**] を選択します。[**暗号化モード**] では、**SSE-KMS**を選択します。[**AWS KMS キー**] については、[**aws/s3**] を選択します (ユーザーがこのキーを使用するアクセス権限を持っていることを確認してください)。これにより、ジョブによって Amazon S3 に書き込まれたデータは、AWS 管理の AWS Glue AWS KMS キーを使用できるようになります。

   1. [**CloudWatch Logs の暗号化**] を選択し、CMK を選択します (ユーザーにこのキーを使用するアクセス許可があることを確認してください)。詳しくは、「*AWS Key Management Service デベロッパーガイド*」の「[Encrypt Log Data in CloudWatch Logs Using AWS KMS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)」を参照してください。
**重要**  
AWS Glue は、対称カスタマーマスターキー (CMK) のみをサポートしています。[**AWS KMS key**] (KMS キー) リストには、対称キーのみが表示されます。ただし、[**Choose a AWS KMS key ARN**] (KMS キー ARN を選択します) を選択した場合、任意のキータイプの ARN をコンソールで入力します。対称キーには ARN だけを入力するようにしてください。

   1. [**詳細プロパティ**] を選択し、[**ジョブのブックマーク暗号化モード**] を選択します。[**AWS KMS キー**] には、[**aws/glue**] を選択します (ユーザーがこのキーを使用するアクセス権限を持っていることを確認してください)。これにより、AWS Glue AWS KMS キーを使用して Amazon S3 に書き込まれたジョブブックマークの暗号化が可能になります。

1. ナビゲーションペインで [**Connections (接続)**] を選択します。

   1. [**接続の追加**] を選択して、ETL ジョブのターゲットとなる Java Database Connectivity (JDBC) データ・ストアへの接続を作成します。

   1. Secure Sockets Layer (SSL) 暗号化が使用されるようにするには、[**Require SSL connection (SSL接続を要求)**] を選択し、接続をテストします。

1. ナビゲーションペインで **ジョブ**を選択します。

   1. [**ジョブを追加**] を選択して、データを変換するジョブを作成します。

   1. ジョブ定義で、作成したセキュリティ構成を選択します。

1. AWS Glue コンソールで、オンデマンドでジョブを実行します。ジョブによって書き込まれた Amazon S3 データ、ジョブによって書き込まれた CloudWatch Logs、およびジョブブックマークがすべて暗号化されていることを確認します。

# AWS Glue のための開発用ネットワークの設定
<a name="start-development-endpoint"></a>

AWS Glue で抽出、変換、ロード (ETL) スクリプトを実行するには、*開発エンドポイント*を使用してスクリプトを開発し、テストすることができます。開発エンドポイントは、AWS Glue バージョン 2.0 ジョブでの使用がサポートされていません。バージョン 2.0 以降では、Jupyter Notebook といずれかの AWS Glue カーネルを使用する開発方法が推奨されています。詳しくは、「[AWS Glue のインタラクティブセッションの開始方法](interactive-sessions.md)」を参照してください。

## 開発エンドポイント用にネットワークを設定する
<a name="setup-vpc-for-development-endpoint"></a>

開発エンドポイントを設定するときは、Virtual Private Cloud (VPC)、サブネット、およびセキュリティグループを指定します。

**注記**  
AWS Glue の DNS 環境を必ず設定してください。詳しくは、「[VPC での DNS のセットアップ](set-up-vpc-dns.md)」を参照してください。

AWS Glue による必要なリソースに対するアクセスを許可するには、サブネットのルートテーブルに行を追加して、Amazon S3 のプレフィックスリストを VPC エンドポイントに関連付けます。プレフィックスリスト ID は、VPC からのトラフィックが VPC エンドポイント経由で AWS のサービスにアクセスできるようにする、アウトバウンドセキュリティグループのルールを作成するために必要です。この開発エンドポイントに関連付けられているノートブックサーバーへの接続をローカルマシンから簡単に行うには、ルートテーブルに行を追加してインターネットゲートウェイ ID を追加します。詳細については、「[VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)」を参照してください。サブネットのルートテーブルを更新すると次の表のようになります。


****  

| ルーティング先 | ターゲット | 
| --- | --- | 
| 10.0.0.0/16 | local | 
| Amazon S3 の pl-id | vpce-id | 
| 0.0.0.0/0 | igw-xxxx | 

 AWS Glue がコンポーネント間で通信できるようにするには、すべての TCP ポートに対して自己参照のインバウンドルールを持つセキュリティグループを指定します。自己参照ルールを作成することで、ソースを VPC 内の同じセキュリティグループに制限することができ、ネットワーク全体には公開されません。VPC のデフォルトのセキュリティグループには、すでに ALL Traffic (すべてのトラフィック) の自己参照インバウンドルールがある場合があります。

**セキュリティグループを設定するには**

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

1. 左のナビゲーションペインで **セキュリティグループ**を選択します。

1. リストから既存のセキュリティグループを選択するか、[**Create Security Group**] (セキュリティグループの作成) を選択して、開発エンドポイントで使用します。

1. セキュリティグループペインで、[**Inbound**] (インバウンド) タブに移動します。

1. 自己参照ルールを追加して、AWS Glue コンポーネントが通信できるようにします。具体的には、[**Type (タイプ)**] `All TCP`、[**Protocol (プロトコル)**] は `TCP`、[**Port Range (ポート範囲)**] にはすべてのポートが含まれ、[**Source (ソース)**] は [**Group ID (グループ ID)**] と同じセキュリティグループ名であるというルールを追加または確認します。

   インバウンドルールは次のようになります。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/start-development-endpoint.html)

   次に、自己参照インバウンドルールの例を示します。  
![\[自己参照インバウンドルールの例を示す図。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/SetupSecurityGroup-Start.png)

1. アウトバウンドトラフィックのルールも追加します。すべてのポートへのアウトバウンドトラフィックを開くか、または [**Type (タイプ)**] `All TCP`、[**Protocol (プロトコル)**] は `TCP`、[**Port Range (ポート範囲)**] にすべてのポートが含まれ、[**Source (ソース)**] は [**Group ID (グループ ID)**] と同じセキュリティグループ名の自己参照ルールを作成します。

   アウトバウンドルールは、次のいずれかのルールのようになります。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/start-development-endpoint.html)

## ノートブックサーバー用の Amazon EC2 のセットアップ
<a name="setup-vpc-for-notebook-server"></a>

 開発エンドポイントでは、Jupyter Notebook で ETL スクリプトをテストするためのノートブックサーバーを作成できます。ノートブックとの通信を可能にするには、HTTPS (ポート 443) と SSH (ポート 22) の両方のインバウンドルールを持つセキュリティグループを指定します。ルールのソースが 0.0.0.0/0 か、ノートブックに接続しているマシンの IP アドレスであることを確認してください。

**セキュリティグループを設定するには**

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

1. 左のナビゲーションペインで **セキュリティグループ**を選択します。

1. リストから既存のセキュリティグループを選択するか、[**Create Security Group**] (セキュリティグループの作成) を選択して、ノートブックサーバーで使用します。開発エンドポイントに関連付けられているセキュリティグループは、ノートブックサーバーの作成にも使用されます。

1. セキュリティグループペインで、[**Inbound**] (インバウンド) タブに移動します。

1. 次のようなインバウンドルールを追加します。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/start-development-endpoint.html)

   次に、セキュリティグループのインバウンドルールの例を示します。  
![\[セキュリティグループのインバウンドルールの例を示す画像。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/SetupSecurityGroupNotebook-Start.png)