メインコンテンツまでスキップ
バージョン: 2.1

AWS Glue

このドキュメントは、CREATE CATALOGを通じてIceberg tablesまたはHive tablesにアクセスするためにAWS Glue カタログを使用する際のパラメータ設定について説明します。

サポートされているGlue Catalogタイプ

AWS Glue Catalogは現在3つのタイプのCatalogをサポートしています:

カタログ タイプタイプ Identifier (type)デスクリプション
Hiveglueカタログ for connecting to Hive Metastore
Icebergglueカタログ for connecting to Iceberg table format
Icebergrestカタログ for connecting to Iceberg table format via Glue Rest カタログ

このドキュメントでは、ユーザーの設定を支援するために各タイプの詳細なパラメータの説明を提供します。

共通パラメータの概要

パラメータ名デスクリプションRequiredデフォルト値
glue.regionAWS Glue region, e.g., us-east-1YesNone
glue.endpointAWS Glue endpoint, e.g., https://glue.us-east-1.amazonaws.comYesNone
glue.access_keyAWS Access Key IDYesEmpty
glue.secret_keyAWS Secret Access KeyYesEmpty
glue.catalog_idGlue カタログ ID (not supported yet)NoEmpty
glue.role_arnIAM Role ARN for accessing Glue (supported since 3.1.2+)NoEmpty
glue.external_idIAM External ID for accessing Glue (supported since 3.1.2+)NoEmpty

認証パラメータ

Glueにアクセスするには認証情報が必要で、以下の2つの方法をサポートしています:

  1. Access Key認証

    glue.access_keyglue.secret_keyで提供されるAccess Keyを通じてGlueへのアクセスを認証します。

  2. IAM Role認証(3.1.2+以降でサポート)

    glue.role_arnで提供されるIAM Roleを通じてGlueへのアクセスを認証します。

    この方法では、DorisがAWS EC2上にデプロイされている必要があり、EC2インスタンスにはGlueにアクセスする権限を持つIAM Roleがバインドされている必要があります。

    External IDを通じたアクセスが必要な場合は、glue.external_idも設定する必要があります。

注意:

  • 2つの方法のうち少なくとも1つは設定する必要があります。両方の方法が設定されている場合、Access Key認証が優先されます。

例:

```sql
CREATE CATALOG hive_glue_catalog PROPERTIES (
'type' = 'hms',
'hive.metastore.type' = 'glue',
'glue.region' = 'us-east-1',
'glue.endpoint' = 'https://glue.us-east-1.amazonaws.com',
-- Using Access Key authentication
'glue.access_key' = '<YOUR_ACCESS_KEY>',
'glue.secret_key' = '<YOUR_SECRET_KEY>'
-- Or using IAM Role authentication
-- 'glue.role_arn' = '<YOUR_ROLE_ARN>',
-- 'glue.external_id' = '<YOUR_EXTERNAL_ID>'
);
```

Hive Glue カタログ

Hive Glue CatalogはAWS GlueのHive Metastore互換インターフェースを通じてHiveTableにアクセスするために使用されます。設定は以下の通りです:

パラメータ名説明必須デフォルト値
typehmsで固定YesNone
hive.metastore.typeglueで固定YesNone
glue.regionAWS Glueリージョン、例:us-east-1YesNone
glue.endpointAWS Glueエンドポイント、例:https://glue.us-east-1.amazonaws.comYesNone
glue.access_keyAWS Access Key IDNoEmpty
glue.secret_keyAWS Secret Access KeyNoEmpty
glue.catalog_idGlue カタログ ID(まだサポートされていません)NoEmpty
glue.role_arnGlueにアクセスするためのIAM Role ARNNoEmpty
glue.external_idGlueにアクセスするためのIAM External IDNoEmpty

CREATE CATALOG hive_glue_catalog PROPERTIES (
'type' = 'hms',
'hive.metastore.type' = 'glue',
'glue.region' = 'us-east-1',
'glue.endpoint' = 'https://glue.us-east-1.amazonaws.com',
'glue.access_key' = 'YOUR_ACCESS_KEY',
'glue.secret_key' = 'YOUR_SECRET_KEY'
);

Iceberg Glue カタログ

Iceberg Glue CatalogはGlue Clientを通じてGlueにアクセスします。設定は以下の通りです:

パラメータ名説明必須デフォルト値
typeicebergに固定はいNone
iceberg.catalog.typeglueに固定はいNone
warehouseIcebergデータウェアハウスパス、例:s3://my-bucket/iceberg-warehouse/はいs3://doris
glue.regionAWS Glueリージョン、例:us-east-1はいNone
glue.endpointAWS Glueエンドポイント、例:https://glue.us-east-1.amazonaws.comはいNone
glue.access_keyAWS Access Key IDいいえEmpty
glue.secret_keyAWS Secret Access KeyいいえEmpty
glue.catalog_idGlue カタログ ID(未サポート)いいえEmpty
glue.role_arnGlueアクセス用のIAM Role ARN(未サポート)いいえEmpty
glue.external_idGlueアクセス用のIAM External ID(未サポート)いいえEmpty

CREATE CATALOG iceberg_glue_catalog PROPERTIES (
'type' = 'iceberg',
'iceberg.catalog.type' = 'glue',
'glue.region' = 'us-east-1',
'glue.endpoint' = 'https://glue.us-east-1.amazonaws.com',
'glue.access_key' = '<YOUR_ACCESS_KEY>',
'glue.secret_key' = '<YOUR_SECRET_KEY>'
);

Iceberg Glue Rest カタログ

Iceberg Glue Rest Catalogは、Glue Rest Catalogインターフェースを通じてGlueにアクセスします。現在はAWS S3 Table Bucketに保存されたIcebergTableのみをサポートしています。設定は以下の通りです:

パラメータ名説明必須デフォルト値
typeicebergに固定はいNone
iceberg.catalog.typerestに固定はいNone
iceberg.rest.uriGlue Restサービスエンドポイント、例:https://glue.ap-east-1.amazonaws.com/icebergはいNone
warehouseIcebergデータウェアハウスパス、例:<account_id>:s3tablescatalog/<bucket_name>はいNone
iceberg.rest.sigv4-enabledV4署名形式を有効化、trueに固定はいNone
iceberg.rest.signing-name署名タイプ、glueに固定はいEmpty
iceberg.rest.access-key-idGlueアクセス用のAccess Key(S3 Bucketアクセスにも使用)はいEmpty
iceberg.rest.secret-access-keyGlueアクセス用のSecret Key(S3 Bucketアクセスにも使用)はいEmpty
iceberg.rest.signing-regionAWS Glueリージョン、例:us-east-1はいEmpty

CREATE CATALOG glue_s3 PROPERTIES (
'type' = 'iceberg',
'iceberg.catalog.type' = 'rest',
'iceberg.rest.uri' = 'https://glue.<region>.amazonaws.com/iceberg',
'warehouse' = '<acount_id>:s3tablescatalog/<s3_table_bucket_name>',
'iceberg.rest.sigv4-enabled' = 'true',
'iceberg.rest.signing-name' = 'glue',
'iceberg.rest.access-key-id' = '<ak>',
'iceberg.rest.secret-access-key' = '<sk>',
'iceberg.rest.signing-region' = '<region>'
);

許可ポリシー

使用シナリオに応じて、read-onlyread-writeのポリシーに分けることができます。

1. Read-Only Permissions

Glue CatalogからデータベースとTable情報の読み取りのみを許可します。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GlueCatalogReadOnly",
"Effect": "Allow",
"Action": [
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables",
"glue:GetPartitions"
],
"Resource": [
"arn:aws:glue:<region>:<account-id>:catalog",
"arn:aws:glue:<region>:<account-id>:database/*",
"arn:aws:glue:<region>:<account-id>:table/*/*"
]
}
]
}

2. Read-Write Permissions

読み取り専用権限をベースとして、データベースとTableの作成/変更/削除を許可します。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GlueCatalogReadWrite",
"Effect": "Allow",
"Action": [
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables",
"glue:GetPartitions",
"glue:CreateDatabase",
"glue:UpdateDatabase",
"glue:DeleteDatabase",
"glue:CreateTable",
"glue:UpdateTable",
"glue:DeleteTable"
],
"Resource": [
"arn:aws:glue:<region>:<account-id>:catalog",
"arn:aws:glue:<region>:<account-id>:database/*",
"arn:aws:glue:<region>:<account-id>:table/*/*"
]
}
]
}

注意事項

  1. プレースホルダーの置換

    • <region> → あなたのAWSリージョン(例:us-east-1
    • <account-id> → あなたのAWSアカウントID(12桁の番号)
  2. 最小権限の原則

    • クエリのみを実行する場合は、書き込み権限を付与しないでください。
    • *を特定のデータベース/TableのARNに置き換えることで、権限をさらに制限できます。
  3. S3権限

    • 上記のポリシーはGlue Catalogのみを対象としています。
    • データファイルを読み取る必要がある場合は、追加のS3権限が必要です(s3:GetObjects3:ListBucketなど)。