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

AWS Glue

この文書では、CREATE CATALOGを使用してAWS Glue カタログ経由でIcebergTableまたはHiveTableにアクセスする際のパラメータ設定について説明します。

サポートされている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にアクセスするために使用されます。設定は以下の通りです:

パラメータ名デスクリプションRequiredデフォルト値
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に固定YesNone
iceberg.catalog.typeglueに固定YesNone
warehouseIcebergデータウェアハウスパス、例:s3://my-bucket/iceberg-warehouse/Yess3://doris
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 ARN(まだサポートされていません)NoEmpty
glue.external_idGlueにアクセスするためのIAM External ID(まだサポートされていません)NoEmpty

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で固定はいなし
iceberg.catalog.typerestで固定はいなし
iceberg.rest.uriGlue Restサービスエンドポイント、例:https://glue.ap-east-1.amazonaws.com/icebergはいなし
warehouseIcebergデータウェアハウスパス、例:<account_id>:s3tablescatalog/<bucket_name>はいなし
iceberg.rest.sigv4-enabledV4署名形式を有効化、trueで固定はいなし
iceberg.rest.signing-name署名タイプ、glueで固定はい
iceberg.rest.access-key-idGlueにアクセスするためのアクセスキー(S3 Bucketのアクセスにも使用)はい
iceberg.rest.secret-access-keyGlueにアクセスするためのシークレットキー(S3 Bucketのアクセスにも使用)はい
iceberg.rest.signing-regionAWS Glueリージョン、例:us-east-1はい

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>'
);

許可ポリシー

使用シナリオに応じて、読み取り専用読み書きのポリシーに分けることができます。

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. Placeholder Replacement

    • <region> → あなたのAWSリージョン(例:us-east-1)。
    • <account-id> → あなたのAWSアカウントID(12桁の数字)。
  2. Principle of Least Privilege

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

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