メインコンテンツまでスキップ

AWS Glue セットアップ

このガイドでは、VeloDBをAWS Glue Icebergカタログに接続するために必要なAWSリソースのセットアップについて説明します。

前提条件

  • S3バケット、Glueデータベース、IAMユーザーを作成する権限を持つAWSアカウント
  • AWS CLIの設定(Lake Formation権限用、オプション)

ステップ1:S3バケットの作成

  1. AWS S3コンソール > バケットの作成 に移動
  2. バケット名を入力(例:my-lakehouse-bucket
  3. VeloDBウェアハウスと同じリージョンを選択
  4. バージョニングを有効にする(推奨)
  5. バケットを作成をクリック
警告

最適なパフォーマンスのため、バケットのリージョンはVeloDBウェアハウスのリージョンと一致している必要があります。

S3 Iceberg folder structure


ステップ2:Glueデータベースの作成

  1. AWSコンソールを開き、「Glue」を検索

  2. AWS Glueコンソール > Data Catalog > データベースに移動

AWS Glue Getting Started

  1. データベースを追加をクリック

  2. 以下を入力:

    • 名前:小文字、数字、アンダースコアのみ使用(例:lakehouse_iceberg_db
    • 場所s3://my-lakehouse-bucket/iceberg/
  3. データベースを作成をクリック

Glue Databases List

警告

データベース名にはハイフン(-)を含めることができません。代わりにアンダースコア(_)を使用してください。


ステップ3:IAMユーザーの作成

  1. IAMコンソール > ユーザー > ユーザーを作成に移動
  2. ユーザー名を入力(例:velodb-glue-user)し、次へをクリック
  3. ポリシーを直接アタッチを選択し、ポリシーを作成をクリック
  4. JSONタブを選択し、以下のポリシーを貼り付け:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"glue:GetDatabase", "glue:GetDatabases",
"glue:CreateDatabase", "glue:UpdateDatabase", "glue:DeleteDatabase",
"glue:GetTable", "glue:GetTables",
"glue:CreateTable", "glue:UpdateTable", "glue:DeleteTable",
"glue:GetPartition", "glue:GetPartitions",
"glue:CreatePartition", "glue:BatchCreatePartition",
"glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition"
],
"Resource": [
"arn:aws:glue:REGION:*:catalog",
"arn:aws:glue:REGION:*:database/lakehouse_*",
"arn:aws:glue:REGION:*:table/lakehouse_*/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject", "s3:PutObject", "s3:DeleteObject",
"s3:ListBucket", "s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::my-lakehouse-bucket",
"arn:aws:s3:::my-lakehouse-bucket/*"
]
},
{
"Effect": "Allow",
"Action": ["lakeformation:GetDataAccess"],
"Resource": "*"
}
]
}

REGIONをあなたのAWSリージョン(例:us-east-1)に、my-lakehouse-bucketを実際のバケット名に置き換えてください。

  1. Nextをクリックし、ポリシーに名前を付け(例:VeloDBGlueAccess)、Create policyをクリックします
  2. ユーザー作成画面に戻り、ポリシーリストを更新して新しいポリシーを選択し、Nextをクリックします
  3. Create userをクリックします
  4. 新しいユーザーを選択し、Security credentialsタブに移動します
  5. Create access key > Third-party service > Next > Create access keyをクリックします
  6. Access Key IDとSecret Access Keyを保存してください - これらはVeloDBで必要になります

ステップ4: Lake Formationの権限を付与する(必要な場合)

一部のリージョン(例:us-east-1)では、Lake Formationがデフォルトで有効になっており、Glueアクセスを制御しています。

AWS Account IDを確認する: AWSコンソールの右上にあるユーザー名をクリックして、Account ID(12桁の数字)を確認してください。

AWS CLIで権限を付与:

# Replace ACCOUNT_ID (12 digits), YOUR_USER, and YOUR_DATABASE with your values
aws lakeformation grant-permissions \
--principal DataLakePrincipalIdentifier=arn:aws:iam::123456789012:user/velodb-glue-user \
--resource '{"Database":{"Name":"lakehouse_iceberg_db"}}' \
--permissions CREATE_TABLE DESCRIBE ALTER DROP
備考

VeloDBで「Lake Formation permission denied」エラーが表示される場合、このステップが必要です。


ステップ5: サンプルデータの書き込み(オプション)

PyIcebergを使用してテーブルを作成し、テスト用のサンプルデータを書き込みます:

pip install "pyiceberg[glue,s3]" pyarrow pandas
from pyiceberg.catalog import load_catalog
import pyarrow as pa
import pandas as pd

# Connect to Glue catalog (replace with your values)
catalog = load_catalog("glue", **{
"type": "glue",
"s3.access-key-id": "YOUR_ACCESS_KEY",
"s3.secret-access-key": "YOUR_SECRET_KEY",
"s3.region": "us-east-1",
"glue.access-key-id": "YOUR_ACCESS_KEY",
"glue.secret-access-key": "YOUR_SECRET_KEY",
"glue.region": "us-east-1",
"warehouse": "s3://my-lakehouse-bucket/iceberg",
})

# Create a sample table
schema = pa.schema([
("id", pa.int64()),
("name", pa.string()),
("value", pa.float64()),
])

table = catalog.create_table(
"lakehouse_iceberg_db.sample_table",
schema=schema
)

# Write sample data
df = pd.DataFrame({
"id": [1, 2, 3],
"name": ["Alice", "Bob", "Charlie"],
"value": [100.5, 200.3, 150.8]
})
table.append(pa.Table.from_pandas(df))
print("Sample data written successfully!")

リージョナルエンドポイントリファレンス

RegionGlue EndpointS3 Endpoint
us-east-1https://glue.us-east-1.amazonaws.comhttps://s3.us-east-1.amazonaws.com
us-west-2https://glue.us-west-2.amazonaws.comhttps://s3.us-west-2.amazonaws.com
eu-west-1https://glue.eu-west-1.amazonaws.comhttps://s3.eu-west-1.amazonaws.com
ap-southeast-1https://glue.ap-southeast-1.amazonaws.comhttps://s3.ap-southeast-1.amazonaws.com
ap-northeast-1https://glue.ap-northeast-1.amazonaws.comhttps://s3.ap-northeast-1.amazonaws.com

VeloDBに必要な値

セットアップ完了後、VeloDBに接続するために以下の値が必要になります:

説明
S3 Bucket Paths3://my-lakehouse-bucket/iceberg
Glue RegionAWSリージョン(例:us-east-1
Glue Endpointhttps://glue.{region}.amazonaws.com
Access Key IDIAMユーザー作成時に取得
Secret Access KeyIAMユーザー作成時に取得

セットアップの確認

テーブルを作成した後、AWS Glue ConsoleのData Catalog > Tablesでテーブルを確認できます:

Glue Iceberg Table Details

S3内のIcebergデータファイルも確認できます:

S3 Iceberg Parquet Files


次のステップ

AWSインフラストラクチャの準備が完了したら、AWS Glue Connection Guideに進んで、ビジュアルインターフェースを使用してVeloDBをGlueカタログに接続してください。