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

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

AWSの認証と認可の設定手順については、ドキュメントaws-authentication-and-authorizationを参照してください。

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にアクセスします。設定は以下の通りです:

パラメータ名デスクリプションRequiredデフォルト値
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

Example

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など)。