我々は最近、 発表の のサポート AWSレイクフォーメーション きめ細かいアクセス制御ポリシー アマゾンアテナ Apache Iceberg、Apache Hudi、Apache Hive などのテーブル形式を使用して、サポートされているファイル形式で保存されたデータのクエリ。 AWS Lake Formation を使用すると、データベース、テーブル、および列レベルのアクセス ポリシーを定義および適用して、Amazon S3 に保存されている Iceberg テーブルにクエリを実行できます。 Lake Formation は、Amazon S3 に保存されたデータに承認とガバナンスのレイヤーを提供します。 この機能には、アップグレードする必要があります。 アテナエンジンバージョン3.
多くの場合、大規模な組織には、ビジネス データの管理において自律的に運営される基幹業務 (LoB) があります。 これにより、LOB 間でのデータ共有が簡単ではなくなります。 これらの組織は連合モデルを採用しており、各 LoB はデータに関する決定を行う自律性を持っています。 彼らは、アクセス制御を実施するために使用される一元化されたガバナンス レイヤーを備えたパブリッシャー/コンシューマー モデルを使用します。 データ メッシュ アーキテクチャについて詳しく知りたい場合は、こちらをご覧ください。 AWS Lake Formation と AWS Glue を使用してデータ メッシュ アーキテクチャを設計する. Athena エンジン バージョン 3 を使用すると、顧客は Apache Iceberg、Apache Hudi、Apache Hive などのオープン データ フレームワークに対して同じきめ細かなコントロールを使用できます。
この投稿では、消費者がクエリできる Apache Iceberg テーブルへのアクセスを制限するために、データ共有を有効にした生産者/消費者モデルがあるユースケースを深く掘り下げます。 特定の行を制限するための列のフィルタリング、列レベルのアクセスを制限するためのフィルタリング、スキーマの進化、タイム トラベルについて説明します。
ソリューションの概要
Athena と Lake Formation を使用した Apache Iceberg テーブルのきめ細かいアクセス許可の機能を説明するために、次のコンポーネントを設定します。
- プロデューサー アカウント:
- An AWSグルー テーブルのスキーマを Apache Iceberg 形式で登録する Data Catalog
- 消費者アカウントへのきめ細かいアクセスを提供する Lake Formation
- プロデューサー アカウントからのデータを検証するための Athena
- 一般ユーザーのアカウント:
- AWS リソース アクセス マネージャー (AWS RAM) は、プロデューサー データ カタログとコンシューマーの間のハンドシェイクを作成します。
- 消費者アカウントへのきめ細かいアクセスを提供する Lake Formation
- Athena がプロデューサー アカウントからのデータを検証
次の図は、アーキテクチャを示しています。
前提条件
開始する前に、次のものが揃っていることを確認してください。
データ プロデューサーのセットアップ
このセクションでは、データ プロデューサーを設定する手順を示します。
テーブル データを格納する S3 バケットを作成する
テーブルのデータを保存するために、新しい S3 バケットを作成します。
- Amazon S3コンソールでは、 S3バケットを作成する 一意の名前 (この投稿では、
iceberg-athena-lakeformation-blog
). - テーブルに使用するプロデューサー フォルダーをバケット内に作成します。
Lake Formation を使用してテーブルを格納する S3 パスを登録する
Lake Formation に S3 のフル パスを登録します。
- Lake Formation コンソールに移動します。
- 初めてログインする場合は、管理者ユーザーを作成するよう求められます。
- ナビゲーションペインの[ 登録して取り込む、選択する データレイクの場所.
- 選択する 登録場所、前に作成した S3 バケット パスを指定します。
- 選択する
AWSServiceRoleForLakeFormationDataAccess
for IAM の役割。
ロールの詳細については、次を参照してください。 ロケーションの登録に使用されるロールの要件.
S3 バケットの暗号化を有効にした場合、Lake Formation が暗号化および復号化操作を実行するためのアクセス許可を提供する必要があります。 参照する 暗号化されたAmazonS3ロケーションの登録 指導のために。
- 選択する 登録場所.
Athena を使用して Iceberg テーブルを作成する
それでは、Apache Iceberg 形式でサポートされている Athena を使用してテーブルを作成しましょう。
- Athenaコンソールで、 クエリエディタ ナビゲーションペインに表示されます。
- 初めて Athena を使用する場合は、 設定、選択する 管理 前に作成した S3 バケットの場所を入力します (
iceberg-athena-lakeformation-blog/producer
). - 選択する Save.
- クエリエディターで、次のクエリを入力します (場所を、Lake Formation に登録した S3 バケットに置き換えます)。 デフォルトのデータベースを使用していますが、他のデータベースを使用することもできます。
- 選択する ラン.
コンシューマー アカウントとテーブルを共有する
機能を説明するために、次のシナリオを実装します。
- 選択した列へのアクセスを提供する
- フィルターに基づいて選択した行へのアクセスを提供する
次の手順を完了します。
- Lake Formation コンソールのナビゲーション ペインの データカタログ、選択する データフィルター.
- 選択する 新しいフィルターを作成する.
- データフィルター名、 入る
blog_data_filter
. - 対象データベース、 入る
lf-demo-db
. - 対象表、 入る
consumer_iceberg
. - 列レベルのアクセス選択 列を含める.
- コンシューマーと共有する列を選択します。
country, address, contactfirstname, city, customerid,
&customername
. - 行フィルター式、フィルターを入力します
country='France'
. - 選択する フィルターを作成.
で、消費者アカウントへのアクセスを許可しましょう consumer_iceberg
列で番号の横にあるXをクリックします。
- ナビゲーションペインで、 テーブル類.
- consumer_iceberg テーブルを選択し、 グラント メニュー。
- 選択 外部アカウント.
- 外部アカウント ID を入力します。
- 選択 名前付きデータカタログリソース.
- データベースとテーブルを選択します。
- データフィルターで、作成したデータ フィルターを選択します。
- データ フィルターのアクセス許可 & 付与可能な権限選択 選択.
- 選択する グラント.
データ コンシューマーのセットアップ
データ コンシューマーを設定するには、リソース共有を受け入れ、AWS RAM と Lake Formation を使用してテーブルを作成します。 次の手順を完了します。
- コンシューマー アカウントにログインし、AWS RAM コンソールに移動します。
- 私と共有 ナビゲーション ペインで、 リソース共有.
- リソース共有を選択します。
- 選択する リソース共有を受け入れる.
- 次の手順で使用するリソース共有の名前をメモします。
- Lake Formation コンソールに移動します。
- 初めてログインする場合は、管理者ユーザーを作成するよう求められます。
- 選択する データベース をクリックし、データベースを選択します。
- ソフトウェア設定ページで、下図のように メニュー、選択 リソースリンクを作成する.
- リソースリンク名で、リソース リンクの名前を入力します (たとえば、
consumer_iceberg
). - データベースと共有テーブルを選択します。
- 選択する 創造する.
ソリューションを検証する
これで、テーブルに対してさまざまな操作を実行して、きめ細かいアクセス制御を検証できます。
挿入操作
にデータを挿入しましょう consumer_iceberg
テーブルを作成し、データ フィルタリングがコンシューマー アカウントで期待どおりに機能することを検証します。
- プロデューサー アカウントにログインします。
- Athenaコンソールで、 クエリエディタ ナビゲーションペインに表示されます。
- 次の SQL を使用して、Iceberg テーブルにデータを書き込み、挿入します。 クエリ エディタを使用して、一度に XNUMX つのクエリを実行します。 一度に XNUMX つのクエリを強調表示/選択し、[実行]/[再実行] をクリックします。
- 次の SQL を使用して、Iceberg テーブルのデータを読み取り、選択します。
- 消費者アカウントにログインします。
- Athena クエリ エディターで、共有テーブルに対して次の SELECT クエリを実行します。
フィルターに基づいて、消費者は列のサブセットと、国がフランスである行を表示できます。
更新/削除操作
次に、行の XNUMX つを更新し、コンシューマーと共有されているデータセットから XNUMX つを削除しましょう。
- 更新および削除されたデータセットを確認します。
- 消費者アカウントにログインします。
- Athena クエリ エディターで、共有テーブルに対して次の SELECT クエリを実行します。
行が XNUMX つだけ使用可能で、都市が Paris に更新されていることがわかります。
スキーマの進化: 新しい列を追加
行の XNUMX つを更新し、コンシューマーと共有されているデータセットから XNUMX つを削除しましょう。
- プロデューサー アカウントにログインします。
- という新しい列を追加します。
geo_loc
アイスバーグのテーブルで。 クエリ エディタを使用して、一度に XNUMX つのクエリを実行します。 一度に XNUMX つのクエリを強調表示/選択し、[実行]/[再実行] をクリックします。
新しく追加された geo_loc
列、Lake Formation データ フィルターを更新する必要があります。
- Lake Formation コンソールで、 データフィルター ナビゲーションペインに表示されます。
- データフィルターを選択して選択します 編集.
- 列レベルのアクセス、新しい列を追加します (
geo_loc
). - 選択する Save.
- 消費者アカウントにログインします。
- Athena クエリ エディターで、次を実行します。
SELECT
共有テーブルに対するクエリ:
新しいコラム geo_loc
表示され、追加の行です。
スキーマの進化: 列の削除
行の XNUMX つを更新し、コンシューマーと共有されているデータセットから XNUMX つを削除しましょう。
- プロデューサー アカウントにログインします。
- テーブルを変更して、Iceberg テーブルから住所列を削除します。 クエリ エディタを使用して、一度に XNUMX つのクエリを実行します。 一度に XNUMX つのクエリを強調表示/選択し、[実行]/[再実行] をクリックします。
列アドレスがテーブルに存在しないことがわかります。
- 消費者アカウントにログインします。
- Athena クエリ エディターで、共有テーブルに対して次の SELECT クエリを実行します。
列アドレスは表にありません。
タイムトラベル
Iceberg テーブルを複数回変更しました。 Iceberg テーブルは、スナップショットを追跡します。 タイム トラベル機能を調べるには、次の手順を実行します。
- プロデューサー アカウントにログインします。
- システム テーブルを照会します。
複数のスナップショットが生成されていることがわかります。
- のいずれかを書き留めます。
committed_at
次の手順で使用する値 (この例では、2023-01-29 21:35:02.176 UTC
). - タイム トラベルを使用して、テーブルのスナップショットを見つけます。 クエリ エディタを使用して、一度に XNUMX つのクエリを実行します。 一度に XNUMX つのクエリを強調表示/選択し、[実行]/[再実行] をクリックします。
クリーンアップ
今後料金が発生しないようにするには、次の手順を実行します。
- Amazon S3 コンソールで、テーブル ストレージ バケットを削除します (この投稿では、iceberg-athena-lakeformation-blog)。
- Athena コンソールのプロデューサー アカウントで、次のコマンドを実行して、作成したテーブルを削除します。
- Lake Formation コンソールのプロデューサー アカウントで、コンシューマー アカウントへのアクセス許可を取り消します。
- Athena クエリ結果の場所に使用される S3 バケットをコンシューマー アカウントから削除します。
まとめ
Iceberg などの形式のクロス アカウント、きめ細かいアクセス制御ポリシーのサポートにより、Athena がサポートする任意の形式を柔軟に操作できます。 S3 データ レイク内のデータに対して CRUD 操作を実行する機能と、Athena がサポートするすべてのテーブルと形式に対する Lake Formation のきめ細かいアクセス制御を組み合わせることで、データ戦略を革新し簡素化する機会が得られます。 フィードバックをお待ちしております。
著者について
キショアダモダラン AWSのシニアソリューションアーキテクトです。 Kishoreは、長年の業界とクラウドの経験を活用して、戦略的な顧客のクラウドエンタープライズ戦略と移行の過程を支援します。
ジャック・イェ AWS の Athena Data Lake and Storage チームのソフトウェア エンジニアです。 彼は Apache Iceberg コミッターであり、PMC メンバーです。
クリス・オルソン AWS のソフトウェア開発エンジニアです。
シャオシュアン・リー AWS のソフトウェア開発エンジニアです。
ラフルソナワネ AWS のプリンシパル アナリティクス ソリューション アーキテクトであり、AI/ML とアナリティクスを専門分野としています。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- Platoblockchain。 Web3メタバースインテリジェンス。 知識の増幅。 こちらからアクセスしてください。
- 情報源: https://aws.amazon.com/blogs/big-data/interact-with-apache-iceberg-tables-using-amazon-athena-and-cross-account-fine-grained-permissions-using-aws-lake-formation/
- :は
- $UP
- 1
- 10
- 100
- 7
- a
- 能力
- 私たちについて
- 同意
- アクセス
- 越えて
- 追加されました
- NEW
- 追加情報
- 住所
- 管理人
- 採択
- に対して
- AI / ML
- すべて
- ことができます
- Amazon
- アマゾンアテナ
- 分析論
- &
- アパッチ
- 建築
- です
- AREA
- 宝品
- AS
- At
- 承認
- 利用できます
- 避ける
- AWS
- AWSレイクフォーメーション
- 支持された
- ベース
- の間に
- ビジネス
- ビジネス
- by
- 呼ばれます
- 缶
- カタログ
- 集中型の
- 一定
- 変化する
- 課金
- 選択する
- 市町村
- クリック
- クラウド
- コラム
- コラム
- COM
- 組み合わせた
- コンプリート
- コンポーネント
- 領事
- consumer
- コントロール
- controls
- 国
- 作ります
- 作成した
- 作成
- 創造
- Cross
- Customers
- データ
- データレイク
- データ共有
- データ戦略
- データベース
- 決定
- 深いです
- ディープダイブ
- デフォルト
- 開発
- 異なります
- 話し合います
- ダウン
- Drop
- 各
- 前
- エディタ
- EMEA
- 使用可能
- では使用できません
- 暗号化
- エンジン
- エンジニア
- 入力します
- Enterprise
- エーテル(ETH)
- 進化
- 例
- 予想される
- 体験
- 探る
- 外部
- File
- filter
- フィルタリング
- フィルター
- もう完成させ、ワークスペースに掲示しましたか?
- 名
- 初回
- 柔軟性
- フォロー中
- 形式でアーカイブしたプロジェクトを保存します.
- 形成
- フレームワーク
- フランス
- から
- フル
- 機能性
- 未来
- 生成された
- 取得する
- 与える
- ガバナンス
- 助成金
- ガイダンス
- 持ってる
- 持って
- 聞く
- ことができます
- ハイブ
- HTML
- HTTP
- HTTPS
- ID
- 実装する
- in
- (株)
- 産業を変えます
- 情報
- 革新します
- 対話
- 興味がある
- IT
- 旅
- JPG
- 湖
- 土地
- 層
- 学習
- レベル
- 活用
- LIMIT
- ライン
- LINK
- 場所
- 愛
- リヨン
- make
- 作る
- 管理する
- メンバー
- メニュー
- 移行
- 他には?
- の試合に
- 名
- ナビゲート
- ナビゲーション
- 必要
- 新作
- 次の
- NYC
- 観察する
- of
- on
- ONE
- 開いた
- 開いているデータ
- 操作する
- 業務執行統括
- 機会
- 組織
- その他
- ペイン
- パリ
- path
- 実行する
- パーミッション
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- ポリシー
- ポスト
- 現在
- 校長
- プロデューサー
- 提供します
- は、大阪で
- RAM
- 読む
- 最近
- 反映
- 登録
- 登録された
- replace
- 必要
- リソースを追加する。
- 制限する
- 制限されました
- 結果
- 職種
- 役割
- 行
- ラン
- 同じ
- Save
- シナリオ
- セクション
- 選択
- シニア
- セッションに
- シェアする
- shared
- シェアリング
- 簡素化する
- Snapshot
- ソフトウェア
- ソフトウェア開発
- ソフトウェアエンジニア
- ソリューション
- 専門
- SQL
- 開始
- ステップ
- ストレージ利用料
- 店舗
- 保存され
- 戦略的
- 戦略
- 文字列
- そのような
- サポート
- サポート
- テーブル
- チーム
- それ
- アプリ環境に合わせて
- ボーマン
- 時間
- タイムトラベル
- <font style="vertical-align: inherit;">回数</font>
- タイムスタンプ
- 〜へ
- 追跡する
- 旅行
- 下
- ユニーク
- アップデイト
- 更新しました
- アップグレード
- USA
- つかいます
- ユーザー
- UTC
- 検証
- 価値観
- 確認する
- バージョン
- 視認性
- 目に見える
- 訪問
- 仕事
- 作品
- 書きます
- 年
- あなたの
- ゼファーネット