
【VPC外リージョンサービス / ENIでVPC接続】
Glue は、サーバーレスな ETL(Extract, Transform, Load) サービスであり、分析(Analytics) における データ統合 と データ準備 を自動化できるプラットフォームです。
Glue Crawler によってデータソースをスキャンし、スキーマを自動検出して Glue Data Catalog に登録します。登録されたメタデータをもとに、Glue Job / ETL Job を実行して Python / Scala / PySpark ベースの ETL処理 を行うことができます。
開発者は Glue Studio を使ってGUI上でジョブを設計でき、ノーコードでデータ整形を行いたい場合は Glue DataBrew を利用できます。また、ジョブの実行や連携を自動化するために Glue Workflow や Trigger が用意されており、複雑なETLパイプラインも簡単に運用できます。
Glue Streaming によって Kinesis や Kafka からのリアルタイムデータを処理でき、Glue Schema Registry でストリーミングデータのスキーマ管理も可能です。
これらの機能は Athena、Redshift、EMR などのサービスと統合して動作し、データレイク環境の構築と分析基盤の自動化を強力に支援します。
重要用語
Glue Data Catalog
Glue Studio
Glue DataBrew
Glue Workflow
Trigger
Glue Schema Registry
関連サービス
ユースケース
| ETLバッチによるデータ加工 | S3やRDS、DynamoDBなどに散在する生データをGlueジョブでクレンジング・変換し、分析しやすい形にして別のS3バケットに出力する。 |
| データカタログによるスキーマ管理 | S3上のファイルをクローラーでスキャンし、テーブル定義をGlue Data Catalogに登録してAthenaやRedshift Spectrumから簡単に参照できるようにする。 |
| サーバーレスETLパイプラインの構築 | スケジュール実行やEventBridgeトリガーと組み合わせて、インフラ管理不要のETLパイプラインを構築し、日次・時間単位でデータを更新する。 |
ベストプラクティス
| データカタログの一元管理 | スキーマをGlue Data Catalogで集中管理し、複数サービスから参照する。 |
| ジョブの小さな単位化 | 処理を小さなジョブに分割し、再利用性と保守性を高める。 |
| 開発エンドポイントとテスト | 本番前に開発エンドポイントやノートブックでETLを検証する。 |
高可用性・バックアップ・リトライ
| 高可用性・バックアップ・リトライ設計のポイント |
|---|
| 【デフォルト】AWS内部で冗長化 ・Data Catalog(メタデータストア) ・ETLジョブ実行環境 ・ジョブブックマーク ・スクリプトとコード保管 ・ジョブ実行履歴とログ ・サービスエンドポイント ・自動リトライ機能 ・データソース/ターゲット |
| 【自動リトライ(ジョブ単位)】デフォルト0回 ジョブが失敗したら自動再実行 |
| 【自動リトライ(バッチ単位)】デフォルト3回 ストリーミングジョブのマイクロバッチが失敗したら自動再実行 |
セキュリティ
| 関連サービス | 設定内容 |
|---|---|
| Subnet(公開リソースと内部リソースの分離) | 【Glueジョブ実行時に作られるENI】 Privateの専用SubnetでマルチAZ構成 |
| SG(リソース単位のアクセス制御) | 【Glueジョブ実行時に作られるENI】 インバウンド:空(全て拒否) アウトバウンド:任意のポート |
| KMS(データの暗号化と鍵の安全管理) | 【ETLの中間データ・スクリプトの暗号化が必要】 独自KMSキーを使うことを推奨(鍵操作、監査) |
| Secrets Manager(機密情報の安全管理) | シークレット(秘密情報)の作成が推奨 ETLジョブで利用する接続先DB認証情報 |
| SSM Parameter Store(設定情報の一元管理) | パラメータ(Parameter)の作成が推奨 ETLジョブで使用する接続情報や設定パス |
| CloudTrail(操作履歴の記録・監査・追跡) | 【自動記録】 作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI) データ操作は追跡できない(データプレーンAPI) |
| Config(リソースの構成状態・設定変更を記録) | 【Configが有効な場合】 データカタログ/ジョブ設定の変更履歴・暗号化/接続情報の準拠評価- |
| GuardDuty(脅威を自動検出) | 【GuardDutyが有効な場合】 データカタログ変更などのAPI異常検知 |
信頼ポリシー: Glue
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "glue.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
リソースベースポリシーによる補完
実行ロールで不足する権限をGlue Data Catalog のリソースベースポリシーで補うパターン
| リソースベースポリシーのPrincipal | リソースベースポリシーのAction |
|---|---|
| 【Athena】 athena.amazonaws.com | glue:GetDatabase glue:GetTable glue:GetPartitions |
| 【Redshift Spectrum】 redshift.amazonaws.com | glue:GetDatabase glue:GetTable glue:GetPartitions |
| 【EMR】 elasticmapreduce.amazonaws.com | glue:GetDatabase glue:GetTable |
| 【Lake Formation】 lakeformation.amazonaws.com | glue:GetDatabase glue:GetTable |
ログ・監視
| ログ出力先 | ログの種類 |
|---|---|
| CloudWatch Logs | ジョブ実行ログ |
標準メトリクス
| メトリクス名 | 説明 |
|---|---|
| glue.ALL.s3.filesystem.read_bytes | S3読み取りバイト数 |
| glue.ALL.s3.filesystem.write_bytes | S3書き込みバイト数 |
| glue.driver.ExecutorAllocationManager.executors.numberAllExecutors | Executor数 |
| glue.driver.aggregate.numCompletedStages | 完了ステージ数 |
| glue.driver.aggregate.numFailedTasks | 失敗タスク数 |
制限値(固定値/ハードリミット/ソフトリミット)
| ハードリミット | 制限値 |
|---|---|
| ジョブの最大実行時間 | 48時間 |
| ソフトリミット | 制限値 |
|---|---|
| ジョブ数/アカウント | 1,000 |
| 同時ジョブ実行数 | 50 |
| DPU(データ処理ユニット) | 100 |
| データベース数/カタログ | 10,000 |
| テーブル数/データベース | 200,000 |
| パーティション数/テーブル | 20,000,000 |
| トリガー数/アカウント | 1,000 |
| クローラー数/アカウント | 1,000 |
| 同時クローラー実行数 | 150 |
AWS CLIのサンプルコード
CloudFormationのサンプルコード
Terraformのサンプルコード
料金計算
| 課金項目 | 説明 |
|---|---|
| クローラー | クローラーの実行時間(DPU-Hour) |
| ETLジョブ | Spark/Pythonジョブの実行時間(DPU-Hour) |
| データカタログ | 保存するオブジェクト数とリクエスト数 |
| 開発エンドポイント | 開発エンドポイントの時間課金 |