メインコンテンツまでスキップ
に最終更新

AWS Glue

このドキュメントでは、CREATE CATALOG を使用して AWS Glue Catalog 経由で Iceberg テーブルまたは Hive テーブルにアクセスする際のパラメータ設定について説明します。

サポートされる Glue Catalog の種類​

AWS Glue Catalog は現在、次の三種類の Catalog をサポートしています。

Catalog の種類種類の識別子(type)説明
HiveglueHive Metastore に接続する Catalog
IcebergglueIceberg テーブル形式に接続する Catalog
IcebergrestGlue Rest Catalog 経由で Iceberg テーブル形式に接続する Catalog

設定できるように、種類ごとのパラメータを詳しく説明します。

共通パラメータの概要​

パラメータ名説明必須デフォルト値
glue.regionAWS Glue のリージョン(例:us-east-1)はいなし
glue.endpointAWS Glue のエンドポイント(例:https://glue.us-east-1.amazonaws.com)はいなし
glue.access_keyAWS Access Key IDはい空文字列
glue.secret_keyAWS Secret Access Keyはい空文字列
glue.catalog_idGlue Catalog ID(現時点では未対応)いいえ空文字列
glue.role_arnGlue へのアクセスに使用する IAM Role ARN(3.1.2 以降でサポート)いいえ空文字列
glue.external_idGlue へのアクセスに使用する IAM External ID(3.1.2 以降でサポート)いいえ空文字列

認証パラメータ​

Glue へのアクセスには認証情報が必要です。次の二つの方法をサポートしています。

  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 上にデプロイし、Glue へのアクセス権限を持つ IAM Role を EC2 インスタンスに関連付ける必要があります。

    External ID を使用したアクセスが必要な場合は、glue.external_id も設定してください。

注意事項:

  • 二つの方法のうち、少なくとも一つを設定する必要があります。両方を設定した場合は、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 の認証と認可を参照してください。

Hive Glue Catalog​

Hive Glue Catalog は、AWS Glue の Hive Metastore 互換インターフェース経由で Hive テーブルにアクセスするために使用します。設定は次のとおりです。

パラメータ名説明必須デフォルト値
typehms に固定はいなし
hive.metastore.typeglue に固定はいなし
glue.regionAWS Glue のリージョン(例:us-east-1)はいなし
glue.endpointAWS Glue のエンドポイント(例:https://glue.us-east-1.amazonaws.com)はいなし
glue.access_keyAWS Access Key IDいいえ空文字列
glue.secret_keyAWS Secret Access Keyいいえ空文字列
glue.catalog_idGlue Catalog ID(現時点では未対応)いいえ空文字列
glue.role_arnGlue へのアクセスに使用する IAM Role ARNいいえ空文字列
glue.external_idGlue へのアクセスに使用する IAM External IDいいえ空文字列

例​

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 Catalog​

Iceberg Glue Catalog は、Glue Client 経由で Glue にアクセスします。設定は次のとおりです。

パラメータ名説明必須デフォルト値
typeiceberg に固定はいなし
iceberg.catalog.typeglue に固定はいなし
warehouseIceberg データウェアハウスのパス(例:s3://my-bucket/iceberg-warehouse/)はいs3://doris
glue.regionAWS Glue のリージョン(例:us-east-1)はいなし
glue.endpointAWS Glue のエンドポイント(例:https://glue.us-east-1.amazonaws.com)はいなし
glue.access_keyAWS Access Key IDいいえ空文字列
glue.secret_keyAWS Secret Access Keyいいえ空文字列
glue.catalog_idGlue Catalog ID(現時点では未対応)いいえ空文字列
glue.role_arnGlue へのアクセスに使用する IAM Role ARN(現時点では未対応)いいえ空文字列
glue.external_idGlue へのアクセスに使用する IAM External ID(現時点では未対応)いいえ空文字列

例​

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 Catalog​

Iceberg Glue Rest Catalog は、Glue Rest Catalog インターフェース経由で Glue にアクセスします。現在、AWS S3 Table Bucket に保存された Iceberg テーブルのみをサポートしています。設定は次のとおりです。

パラメータ名説明必須デフォルト値
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 へのアクセスに使用する Access Key(S3 Bucket へのアクセスにも使用)はい空文字列
iceberg.rest.secret-access-keyGlue へのアクセスに使用する Secret Key(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. 読み取り専用権限​

Glue Catalog からデータベースとテーブルの情報を読み取ることのみを許可します。

{
"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. 読み書き権限​

読み取り専用権限に加えて、データベースとテーブルの作成、変更、削除を許可します。

{
"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. 最小権限の原則

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

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