Kami baru-baru mengumumkan dukungan untuk Formasi Danau AWS kebijakan kontrol akses berbutir halus di Amazon Athena kueri untuk data yang disimpan dalam format file apa pun yang didukung menggunakan format tabel seperti Apache Iceberg, Apache Hudi, dan Apache Hive. AWS Lake Formation memungkinkan Anda menentukan dan menerapkan kebijakan akses tingkat database, tabel, dan kolom untuk membuat kueri tabel Iceberg yang disimpan di Amazon S3. Lake Formation memberikan lapisan otorisasi dan tata kelola pada data yang disimpan di Amazon S3. Kemampuan ini mengharuskan Anda meningkatkan ke Mesin Athena versi 3.
Organisasi besar seringkali memiliki lini bisnis (LoB) yang beroperasi dengan otonomi dalam mengelola data bisnis mereka. Itu membuat berbagi data di LoBs non-sepele. Organisasi-organisasi ini telah mengadopsi model federasi, dengan setiap LoB memiliki otonomi untuk mengambil keputusan atas data mereka. Mereka menggunakan model penerbit/konsumen dengan lapisan tata kelola terpusat yang digunakan untuk menerapkan kontrol akses. Jika Anda tertarik untuk mempelajari lebih lanjut tentang arsitektur data mesh, kunjungi Rancang arsitektur jala data menggunakan AWS Lake Formation dan AWS Glue. Dengan mesin Athena versi 3, pelanggan dapat menggunakan kontrol halus yang sama untuk kerangka kerja data terbuka seperti Apache Iceberg, Apache Hudi, dan Apache Hive.
Dalam postingan ini, kami mendalami kasus penggunaan di mana Anda memiliki model produsen/konsumen dengan berbagi data yang diaktifkan untuk memberikan akses terbatas ke tabel Apache Iceberg yang dapat ditanyakan oleh konsumen. Kami akan membahas pemfilteran kolom untuk membatasi baris tertentu, pemfilteran untuk membatasi akses tingkat kolom, evolusi skema, dan perjalanan waktu.
Ikhtisar solusi
Untuk mengilustrasikan fungsionalitas izin terperinci untuk tabel Apache Iceberg dengan Athena dan Lake Formation, kami menyiapkan komponen berikut:
- Di akun produsen:
- An Lem AWS Katalog Data untuk mendaftarkan skema tabel dalam format Apache Iceberg
- Lake Formation untuk menyediakan akses terperinci ke akun konsumen
- Athena untuk memverifikasi data dari akun produser
- Di akun konsumen:
- Manajer Akses Sumber Daya AWS (AWS RAM) untuk membuat jabat tangan antara Katalog Data produsen dan konsumen
- Lake Formation untuk menyediakan akses terperinci ke akun konsumen
- Athena untuk memverifikasi data dari akun produsen
Diagram berikut menggambarkan arsitektur.
Prasyarat
Sebelum memulai, pastikan Anda memiliki yang berikut ini:
Penyiapan produsen data
Pada bagian ini, kami menyajikan langkah-langkah untuk menyiapkan penghasil data.
Buat bucket S3 untuk menyimpan data tabel
Kami membuat bucket S3 baru untuk menyimpan data tabel:
- Di konsol Amazon S3, buat ember S3 dengan nama yang unik (untuk postingan ini, kami menggunakan
iceberg-athena-lakeformation-blog
). - Buat folder produsen di dalam ember untuk digunakan pada tabel.
Daftarkan jalur S3 yang menyimpan tabel menggunakan Lake Formation
Kami mendaftarkan jalur lengkap S3 di Lake Formation:
- Arahkan ke konsol Lake Formation.
- Jika Anda masuk untuk pertama kali, Anda diminta untuk membuat pengguna admin.
- Di panel navigasi, di bawah Daftar dan serap, pilih Lokasi data lake.
- Pilih Daftarkan lokasi, dan berikan jalur bucket S3 yang Anda buat sebelumnya.
- Pilih
AWSServiceRoleForLakeFormationDataAccess
untuk peran IAM.
Untuk informasi tambahan tentang peran, lihat Persyaratan peran yang digunakan untuk mendaftarkan lokasi.
Jika Anda mengaktifkan enkripsi bucket S3, Anda harus memberikan izin kepada Lake Formation untuk melakukan operasi enkripsi dan dekripsi. Mengacu pada Mendaftarkan lokasi Amazon S3 terenkripsi untuk panduan.
- Pilih Daftarkan lokasi.
Buat tabel Gunung Es menggunakan Athena
Sekarang mari kita buat tabel menggunakan format Athena yang didukung oleh Apache Iceberg:
- Di konsol Athena, pilih Editor-kueri di panel navigasi.
- Jika Anda menggunakan Athena untuk pertama kalinya, di bawah Settings, pilih Mengelola dan masukkan lokasi bucket S3 yang telah Anda buat sebelumnya (
iceberg-athena-lakeformation-blog/producer
). - Pilih Save.
- Di editor kueri, masukkan kueri berikut (ganti lokasi dengan bucket S3 yang Anda daftarkan dengan Lake Formation). Perhatikan bahwa kami menggunakan database default, tetapi Anda dapat menggunakan database lainnya.
- Pilih Run.
Bagikan tabel dengan akun konsumen
Untuk mengilustrasikan fungsionalitas, kami menerapkan skenario berikut:
- Berikan akses ke kolom yang dipilih
- Berikan akses ke baris yang dipilih berdasarkan filter
Selesaikan langkah-langkah berikut:
- Di konsol Lake Formation, di panel navigasi di bawah Katalog data, pilih Filter data.
- Pilih Buat filter baru.
- Untuk Nama filter data, Masuk
blog_data_filter
. - Untuk Basis data sasaran, Masuk
lf-demo-db
. - Untuk Tabel target, Masuk
consumer_iceberg
. - Untuk Akses tingkat kolom, pilih Sertakan kolom.
- Pilih kolom untuk dibagikan dengan konsumen:
country, address, contactfirstname, city, customerid,
dancustomername
. - Untuk Ekspresi filter baris, masukkan filter
country='France'
. - Pilih Buat filter.
Sekarang mari berikan akses ke akun konsumen di consumer_iceberg
tabel.
- Di panel navigasi, pilih Meja.
- Pilih tabel consumer_iceberg, dan pilih Hibah pada tindakan menu.
- Pilih Akun eksternal.
- Masukkan ID akun eksternal.
- Pilih Sumber daya katalog data bernama.
- Pilih database dan tabel Anda.
- Untuk Filter data, pilih filter data yang Anda buat.
- Untuk Izin filter data dan Izin yang dapat diberikan, pilih Pilih.
- Pilih Hibah.
Penyiapan konsumen data
Untuk menyiapkan konsumen data, kami menerima pembagian sumber daya dan membuat tabel menggunakan AWS RAM dan Lake Formation. Selesaikan langkah-langkah berikut:
- Masuk ke akun konsumen dan arahkan ke konsol AWS RAM.
- Bawah Dibagikan dengan saya di panel navigasi, pilih Berbagi sumber daya.
- Pilih bagian sumber daya Anda.
- Pilih Terima berbagi sumber daya.
- Catat nama pembagian sumber daya yang akan digunakan di langkah berikutnya.
- Arahkan ke konsol Lake Formation.
- Jika Anda masuk untuk pertama kali, Anda diminta untuk membuat pengguna admin.
- Pilih Database di panel navigasi, lalu pilih database Anda.
- pada tindakan menu, pilih Buat tautan sumber daya.
- Untuk Nama tautan sumber daya, masukkan nama tautan sumber daya Anda (misalnya,
consumer_iceberg
). - Pilih database dan tabel bersama Anda.
- Pilih membuat.
Validasi solusinya
Sekarang kita dapat menjalankan operasi yang berbeda pada tabel untuk memvalidasi kontrol akses berbutir halus.
Masukkan operasi
Mari masukkan data ke dalam consumer_iceberg
tabel di akun produsen, dan memvalidasi pemfilteran data berfungsi seperti yang diharapkan di akun konsumen.
- Masuk ke akun produsen.
- Di konsol Athena, pilih Editor-kueri di panel navigasi.
- Gunakan SQL berikut untuk menulis dan memasukkan data ke dalam tabel Gunung Es. Gunakan editor kueri untuk menjalankan kueri satu per satu. Anda dapat menyorot/memilih satu kueri sekaligus dan mengklik "Jalankan"/"Jalankan lagi:
- Gunakan SQL berikut untuk membaca dan memilih data di tabel Gunung Es:
- Masuk ke akun konsumen.
- Di editor kueri Athena, jalankan kueri SELECT berikut di tabel bersama:
Berdasarkan filter, konsumen memiliki visibilitas ke subkumpulan kolom dan baris dengan negara Prancis.
Perbarui/Hapus operasi
Sekarang mari perbarui salah satu baris dan hapus salah satu dari kumpulan data yang dibagikan dengan konsumen.
- Verifikasi set data yang diperbarui dan dihapus:
- Masuk ke akun konsumen.
- Di editor kueri Athena, jalankan kueri SELECT berikut di tabel bersama:
Kami dapat mengamati bahwa hanya satu baris yang tersedia dan kota diperbarui ke Paris.
Evolusi skema: Tambahkan kolom baru
Mari perbarui salah satu baris dan hapus satu baris dari kumpulan data yang dibagikan dengan konsumen.
- Masuk ke akun produsen.
- Tambahkan kolom baru bernama
geo_loc
di meja gunung es. Gunakan editor kueri untuk menjalankan kueri satu per satu. Anda dapat menyorot/memilih satu kueri sekaligus dan mengklik "Jalankan"/"Jalankan lagi:
Untuk memberikan visibilitas ke yang baru ditambahkan geo_loc
kolom, kita perlu memperbarui filter data Lake Formation.
- Di konsol Formasi Danau, pilih Filter data di panel navigasi.
- Pilih filter data Anda dan pilih Edit.
- Bawah Akses tingkat kolom, tambahkan kolom baru (
geo_loc
). - Pilih Save.
- Masuk ke akun konsumen.
- Di editor kueri Athena, jalankan perintah berikut
SELECT
kueri di tabel bersama:
kolom baru geo_loc
terlihat dan baris tambahan.
Evolusi skema: Hapus kolom
Mari perbarui salah satu baris dan hapus satu baris dari kumpulan data yang dibagikan dengan konsumen.
- Masuk ke akun produsen.
- Ubah tabel untuk menghapus kolom alamat dari tabel Gunung Es. Gunakan editor kueri untuk menjalankan kueri satu per satu. Anda dapat menyorot/memilih satu kueri sekaligus dan mengklik "Jalankan"/"Jalankan lagi:
Kita dapat mengamati bahwa alamat kolom tidak ada dalam tabel.
- Masuk ke akun konsumen.
- Di editor kueri Athena, jalankan kueri SELECT berikut di tabel bersama:
Alamat kolom tidak ada dalam tabel.
Perjalanan waktu
Kami sekarang telah mengubah tabel Gunung Es beberapa kali. Tabel Iceberg melacak snapshot. Selesaikan langkah-langkah berikut untuk menjelajahi fungsi perjalanan waktu:
- Masuk ke akun produsen.
- Meminta tabel sistem:
Kami dapat mengamati bahwa kami telah menghasilkan banyak snapshot.
- Catat salah satu dari
committed_at
nilai untuk digunakan di langkah selanjutnya (untuk contoh ini,2023-01-29 21:35:02.176 UTC
). - Gunakan perjalanan waktu untuk menemukan cuplikan tabel. Gunakan editor kueri untuk menjalankan kueri satu per satu. Anda dapat menyorot/memilih satu kueri sekaligus dan mengklik "Jalankan"/"Jalankan lagi:
Membersihkan
Selesaikan langkah-langkah berikut untuk menghindari timbulnya tagihan di masa mendatang:
- Di konsol Amazon S3, hapus keranjang penyimpanan tabel (untuk posting ini, blog iceberg-athena-lakeformation).
- Di akun produser di konsol Athena, jalankan perintah berikut untuk menghapus tabel yang Anda buat:
- Di akun produser di konsol Lake Formation, cabut izin ke akun konsumen.
- Hapus bucket S3 yang digunakan untuk lokasi hasil kueri Athena dari akun konsumen.
Kesimpulan
Dengan dukungan untuk lintas akun, kebijakan kontrol akses terperinci untuk format seperti Iceberg, Anda memiliki fleksibilitas untuk bekerja dengan format apa pun yang didukung oleh Athena. Kemampuan untuk melakukan operasi CRUD terhadap data di data lake S3 Anda dikombinasikan dengan kontrol akses halus Lake Formation untuk semua tabel dan format yang didukung oleh Athena memberikan peluang untuk berinovasi dan menyederhanakan strategi data Anda. Kami akan senang mendengar tanggapan Anda!
Tentang penulis
Kishore Dhamodaran adalah Arsitek Solusi Senior di AWS. Kishore membantu pelanggan strategis dengan strategi perusahaan cloud dan perjalanan migrasi mereka, memanfaatkan pengalaman industri dan cloud selama bertahun-tahun.
Jack Ye adalah insinyur perangkat lunak dari tim Athena Data Lake and Storage di AWS. Dia adalah Committer Apache Iceberg dan anggota PMC.
Chris Olson adalah Insinyur Pengembangan Perangkat Lunak di AWS.
Xiaoxuan Li adalah Insinyur Pengembangan Perangkat Lunak di AWS.
Rahul Sonawane adalah Arsitek Solusi Analisis Utama di AWS dengan AI/ML dan Analytics sebagai bidang spesialisasinya.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- Platoblockchain. Intelijen Metaverse Web3. Pengetahuan Diperkuat. Akses Di Sini.
- Sumber: 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/
- :adalah
- $NAIK
- 1
- 10
- 100
- 7
- a
- kemampuan
- Tentang Kami
- Setuju
- mengakses
- Akun
- di seluruh
- menambahkan
- Tambahan
- Informasi Tambahan
- alamat
- admin
- diadopsi
- terhadap
- AI / ML
- Semua
- memungkinkan
- Amazon
- Amazon Athena
- analisis
- dan
- Apache
- arsitektur
- ADALAH
- DAERAH
- Seni
- AS
- At
- otorisasi
- tersedia
- menghindari
- AWS
- Formasi Danau AWS
- bersandaran
- berdasarkan
- antara
- bisnis
- bisnis
- by
- bernama
- CAN
- katalog
- terpusat
- tertentu
- perubahan
- beban
- Pilih
- Kota
- Klik
- awan
- Kolom
- Kolom
- COM
- bergabung
- lengkap
- komponen
- konsul
- konsumen
- kontrol
- kontrol
- negara
- membuat
- dibuat
- membuat
- penciptaan
- Cross
- pelanggan
- data
- Danau Data
- berbagi data
- strategi data
- Basis Data
- keputusan
- mendalam
- menyelam dalam
- Default
- Pengembangan
- berbeda
- membahas
- turun
- Menjatuhkan
- setiap
- Terdahulu
- editor
- EMEA
- diaktifkan
- terenkripsi
- enkripsi
- Mesin
- insinyur
- Enter
- Enterprise
- Eter (ETH)
- evolusi
- contoh
- diharapkan
- pengalaman
- menyelidiki
- luar
- File
- menyaring
- penyaringan
- filter
- Menemukan
- Pertama
- pertama kali
- keluwesan
- berikut
- Untuk
- format
- pembentukan
- kerangka
- Prancis
- dari
- penuh
- fungsi
- masa depan
- dihasilkan
- mendapatkan
- Memberikan
- pemerintahan
- memberikan
- bimbingan
- Memiliki
- memiliki
- mendengar
- membantu
- Sarang lebah
- HTML
- http
- HTTPS
- ID
- melaksanakan
- in
- Inc
- industri
- informasi
- berinovasi
- berinteraksi
- tertarik
- IT
- perjalanan
- jpg
- danau
- Tanah
- lapisan
- pengetahuan
- Tingkat
- leveraging
- MEMBATASI
- baris
- LINK
- tempat
- cinta
- Lyon
- membuat
- MEMBUAT
- pelaksana
- anggota
- menu
- migrasi
- model
- lebih
- beberapa
- nama
- Arahkan
- Navigasi
- Perlu
- New
- berikutnya
- NYC
- mengamati
- of
- on
- ONE
- Buka
- Data terbuka
- beroperasi
- Operasi
- Peluang
- organisasi
- Lainnya
- pane
- Paris
- path
- melakukan
- Izin
- plato
- Kecerdasan Data Plato
- Data Plato
- Kebijakan
- Pos
- menyajikan
- Utama
- produsen
- memberikan
- menyediakan
- RAM
- Baca
- baru-baru ini
- tercermin
- daftar
- terdaftar
- menggantikan
- membutuhkan
- sumber
- membatasi
- terbatas
- mengakibatkan
- Peran
- peran
- BARIS
- Run
- sama
- Save
- skenario
- Bagian
- terpilih
- senior
- set
- Share
- berbagi
- berbagi
- menyederhanakan
- Potret
- Perangkat lunak
- pengembangan perangkat lunak
- Software Engineer
- Solusi
- Khusus
- SQL
- mulai
- Tangga
- penyimpanan
- menyimpan
- tersimpan
- Strategis
- Penyelarasan
- Tali
- seperti itu
- mendukung
- Didukung
- sistem
- tabel
- tim
- bahwa
- Grafik
- mereka
- Ini
- waktu
- perjalanan waktu
- kali
- timestamp
- untuk
- jalur
- perjalanan
- bawah
- unik
- Memperbarui
- diperbarui
- meningkatkan
- Amerika Serikat
- menggunakan
- Pengguna
- UTC
- MENGESAHKAN
- Nilai - Nilai
- memeriksa
- versi
- jarak penglihatan
- terlihat
- Mengunjungi
- dengan
- Kerja
- bekerja
- menulis
- tahun
- Anda
- zephyrnet.dll