Google CloudがAWS GlueとBigQueryの接続を紹介

Google CloudがAWS GlueとBigQueryの接続を紹介、gcloud alphaのコマンド例でカタログ登録が可能

公開:
CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座

手順例では、AWS Glue Data Catalogは、gcloudコマンドを使ってフェデレーションカタログとしてGoogle Cloudに登録できます。IAMロールのポリシーは、BigQueryにAWS Glueのメタデータの読み取りと、Amazon S3上のParquetデータファイルへのアクセスを許可する仕組みです。[1]

AWS GlueをBigQueryにつなぐためのAWS側とGoogle Cloud側の設定と、利用前に確かめる条件を解説します。Google Cloud側の登録と同期の確認は、gcloud alphaのコマンド例で進めます。

目次
  1. AWS GlueをBigQueryに接続する仕組み
  2. AWS GlueをBigQueryへ接続する手順
  3. AWS GlueをBigQueryに接続する前提

AWS GlueをBigQueryに接続する仕組み

AWS Glueの接続では、AWS Glue Data Catalogをフェデレーションカタログとして、gcloudコマンドでGoogle Cloudに登録します。主な要素は、カタログ登録やBigQueryに付与するアクセス権限、メタデータの同期、名前空間の確認です。[1]

AWS GlueをBigQueryに接続する手順の要点

図1 AWS GlueをBigQueryに接続する手順の要点

BigQueryに許可するAWS Glueの操作は、glue:GetCatalogやglue:GetTablesなどの読み取りです。コード例では、対象をarn:aws:glue:us-east-2:123456789012:*に限っています。

permissions_policy.jsonの例は、Parquetデータファイル用にBigQueryへs3:ListBucketとs3:GetObjectを許可します。対象は、arn:aws:s3:::my-glue-iceberg-bucketと配下のオブジェクトです。

AWS GlueをBigQueryへ接続する手順

接続の設定には、AWS CLIやAmazon Athena、gcloudコマンドラインツールを使います。AWS側の準備からメタデータ同期の有効化まで、順に進めます。[1]

AWS GlueとBigQueryの接続の流れ

図2 AWS GlueとBigQueryの接続の流れ

仮の信頼ポリシーの作成

AWS側では最初に、Versionが"2012-10-17"の信頼ポリシーtrust_policy.jsonを、仮の値を入れて作成します。Google Cloudがカタログ固有のサービスエージェントを割り当てる前に、IAMロールを作るためです。

Effectは"Allow"で、Federatedのaccounts.google.comにsts:AssumeRoleWithWebIdentityを許可します。StringEquals条件のaccounts.google.com:audとaccounts.google.com:subには、PLACEHOLDER_VALUEを入れる形です。

仮の信頼ポリシーtrust_policy.json

図3 仮の信頼ポリシーtrust_policy.json

AWS CLIでのIAMロール作成

IAMロールは、AWS CLIのaws iam create-roleで作成します。--role-name "$AWS_ROLE_NAME"の値は、例ではlakehouse_glue_federation_roleです。

aws iam create-roleでのロール作成

図4 aws iam create-roleでのロール作成

--assume-role-policy-documentには、file://trust_policy.jsonを指定します。Google Cloudは、--max-session-durationの12時間(43200秒)設定で、長時間の分析クエリ中の認証情報の期限切れを防ぐとしています。


Python研修一覧はこちら

目的に合うPython研修を一覧形式から探したい方は、ぜひご利用ください。

Python研修を比較する

Java研修一覧はこちら

目的に合うJava研修を一覧形式から探したい方は、ぜひご利用ください。

Java研修を比較する

PHP研修一覧はこちら

目的に合うPHP研修を一覧形式から探したい方は、ぜひご利用ください。

PHP研修を比較する

新入社員研修

目的に合う新入社員研修を一覧形式から探したい方は、ぜひご利用ください。

新入社員研修を比較する

全ての研修からも探したい方はこちら

IAMロールへの権限ポリシー付与

次に、permissions_policy.jsonに、BigQuery向けの権限ポリシーを定義します。AWS Glueのカタログのメタデータの読み取りと、Amazon S3上のParquetデータファイルへのアクセスを許可するポリシーです。

権限ポリシーの作成と付与

図5 権限ポリシーの作成と付与

このポリシーは、aws iam put-role-policyで新しく作成したIAMロールに付けます。ポリシー名は、--policy-nameでlakehouse_glue_federation_policyと指定します。

付与先のロールは、--role-nameの$AWS_ROLE_NAMEです。ポリシーの中身は、--policy-documentでfile://permissions_policy.jsonとして渡します。

Icebergテーブルの作成

権限の設定後は、Amazon Athenaを使ってAWS Glueにデータベースglue_retail_dbを作ります。Icebergテーブルglue_retail_db.dim_storesはstore_keyなど8列で、どちらもIF NOT EXISTS付きです。

Amazon Athenaで作るIcebergテーブル

図6 Amazon Athenaで作るIcebergテーブル

LOCATIONは、s3://my-glue-iceberg-bucket/retail/dim_stores/です。TBLPROPERTIESでは、table_typeにICEBERG、formatにparquet、write_compressionにzstdを指定しています。

Google Cloud側のカタログ登録

Google Cloud側では、gcloudコマンドラインツールでフェデレーションカタログを登録します。AWSアカウントIDなどの値は、--glue-warehouseなどのオプションで渡す形式です。

カタログ登録から信頼ポリシー更新まで

図7 カタログ登録から信頼ポリシー更新まで

カタログは、最初は更新スケジュールを設定せずに作成します。AWS側の信頼ポリシーが反映されるまでの間に、バックグラウンドの更新が早すぎて失敗するのを防ぐためです。

カタログを作成するコマンドは、以下の通りです。

export GCP_PROJECT_ID="my-lakehouse-project"
export GCP_REGION="us-central1"
export AWS_REGION="us-east-2"
export AWS_ACCOUNT_ID="123456789012"

gcloud alpha biglake iceberg catalogs create glue_retail_db \
  --project="$GCP_PROJECT_ID" \
  --primary-location="$GCP_REGION" \
  --catalog-type="federated" \
  --federated-catalog-type="glue" \
  --glue-warehouse="$AWS_ACCOUNT_ID" \
  --glue-aws-region="$AWS_REGION" \
  --glue-aws-role-arn="arn:aws:iam::${AWS_ACCOUNT_ID}:role/lakehouse_glue_federation_role"

公式資料からの抜粋:Cross-cloud conversational analytics made simple with open standards(Connect AWS Glue to BigQuery)。対象版・範囲:Google Cloudブログの手順例(gcloud alphaコマンド)。

上記のコードでは、--catalog-typeにfederated、--federated-catalog-typeにglueを指定しています。例の値は、GCP_REGIONがus-central1、AWS_REGIONがus-east-2です。

サブジェクトIDの取得

次に、Google Cloudがカタログに割り当てた一意の数値のサブジェクトIDを取り出します。取り出した後は、AWS CLIに戻って信頼ポリシーを更新する流れです。

describeでの値の取得

図8 describeでの値の取得

コード例は、gcloud alpha biglake iceberg catalogs describeでglue_retail_dbを指定します。--formatのvalue(biglake-service-account-id)で取り出した値は、LAKEHOUSE_SA_IDに設定してechoで表示します。


Python基礎・実践(Django)

企業・法人向けのPython研修では、基礎から応用まで体系的に学べます。

Python研修の詳細

DX社員研修

企業・法人向けのDX研修では、実務に繋がるリスキリングでITレベルを向上させます。

DX研修の詳細

Javaエンジニア育成研修

企業・法人向けのJavaエンジニア育成研修では、Javaの基礎から応用まで確実に習得できます。

Java研修の詳細

新卒・新入社員向け研修

企業・法人に新入社員・新卒社員に向けたプログラミング研修を提供しています。

新入社員研修の詳細

コードキャンプのIT研修を全て見る

IAMロールの信頼ポリシー更新

AWS CLIに戻り、仮の値を確認済みのGoogle CloudのIDに置き換えて、IAMロールの信頼ポリシーを更新します。コード例では、trust_policy_final.jsonを新しく作り、aud条件とsub条件の両方に$LAKEHOUSE_SA_IDを入れる形です。

trust_policy_final.jsonでの更新

図9 trust_policy_final.jsonでの更新

Effectは"Allow"で、Federatedのaccounts.google.comにsts:AssumeRoleWithWebIdentityを許可します。audとsubの条件はStringEqualsで、更新のコマンドはaws iam update-assume-role-policyです。

更新するロールは、--role-nameの$AWS_ROLE_NAMEで指定します。--policy-documentには、file://trust_policy_final.jsonを渡します。

メタデータ同期の有効化

メタデータの同期は、gcloud alpha biglake iceberg catalogs updateで有効にします。glue_retail_dbを対象に、--projectに$GCP_PROJECT_ID、--refresh-intervalに300sを指定する形です。

gcloud alphaでの同期の設定と確認

図10 gcloud alphaでの同期の設定と確認

同期した名前空間を確かめるコマンドは、以下の通りです。

# Verify namespaces synchronized from AWS Glue
gcloud alpha biglake iceberg namespaces list \
  --project="$GCP_PROJECT_ID" \
  --catalog="glue_retail_db"

公式資料からの抜粋:Cross-cloud conversational analytics made simple with open standards(5. Enable metadata synchronization and verify)。対象版・範囲:Google Cloudブログの手順例(gcloud alphaコマンド)。

上記のコードでは、--catalogにglue_retail_dbを指定します。AWS Glueから同期された名前空間を一覧にし、検出と同期を確かめます。

AWS GlueをBigQueryに接続する前提

フェデレーションカタログの登録には、12桁のAWSアカウントIDやAWSリージョン、作成したIAMロールのARNが必要です。カタログの作成や取得、更新、名前空間の一覧表示に使う4つのgcloudコマンドは、いずれもgcloud alphaで始まります。[1]

カタログ登録に必要な値

図11 カタログ登録に必要な値

AWS Lake Formation権限

AWS Lake Formationを使う環境では、IAMAllowedPrincipalsグループが対象のデータベースとテーブルにアクセスできるかの確認が必要です。AWS Lake Formationに登録したバケットなら、lakehouse_glue_federation_roleに明示的な権限を与える方法も選べます。

AWS Lake Formation利用時の権限確認

図12 AWS Lake Formation利用時の権限確認

権限がない場合、Lake Formationのセキュリティ設定がアクセスをブロックします。対象は、IAMロールによるカタログのメタデータへのアクセスです。

場面別の確認点と登録時の順序

編集部が整理した場面別の確認点と作業順序は、以下の通りです。

提供段階:コード例のgcloud alphaを使う場合は段階を確認/権限の前提:AWS Lake Formationを使う場合は登録前に権限を確認/リージョン:例と異なる場合は値を置き換え利用可否を確認/同期の順序:新規登録時は信頼ポリシー更新後に同期を設定

東京リージョンなど例と異なるリージョンでは、GCP_REGIONやAWS_REGIONを置き換えます。そのリージョンで利用できるかも、公式情報で確かめる必要があります。

出典

  1. ^ Google Cloud. 「Cross-cloud conversational analytics made simple with open standards」. https://cloud.google.com/blog/products/data-analytics/cross-cloud-conversational-analytics-with-borderless-lakehouse, (参照 26-10-13).

※本記事は公式の一次情報を基に編集しています。内容はAIで確認していますが、誤りや最新情報との差異がある場合は、以下フォームよりご報告ください。

修正・削除・掲載などの依頼はこちら
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

企業・法人向けのIT・プログラミング・生成AI研修を探す、比較する - IT・プログラミングを知って学べるコネクトメディア CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプが提供する無料で学べるプログラミングスクール講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 3.5日の研修で、年間1,600時間の削減効果が見込まれる。東京きらぼしフィナンシャルグループのDX人材育成事例 - IT・プログラミングを知って学べるコネクトメディア 配属3ヶ月で30%の生産性向上を実現するいよぎんコンピュータサービスの新人研修に迫る - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

What's New

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する