メインコンテンツまでスキップ
バージョン: 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_keyとglue.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:GetObject、s3:ListBucketなど)。