Menggunakan Tabel Amazon S3 dengan layanan analitik AWS - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan Tabel Amazon S3 dengan layanan analitik AWS

Untuk membuat tabel di akun Anda dapat diakses oleh layanan AWS analitik, Anda mengintegrasikan bucket tabel Amazon S3 Anda dengan Amazon Lakehouse. SageMaker Integrasi ini memungkinkan layanan AWS analitik untuk secara otomatis menemukan dan mengakses data tabel Anda. Anda dapat menggunakan integrasi ini untuk bekerja dengan tabel Anda di layanan ini:

catatan

Integrasi ini menggunakan AWS Glue dan AWS Lake Formation layanan dan mungkin menimbulkan AWS Glue permintaan dan biaya penyimpanan. Untuk informasi selengkapnya, silakan lihat Harga AWS Glue.

Harga tambahan berlaku untuk menjalankan kueri pada tabel S3 Anda. Untuk informasi selengkapnya, lihat informasi harga untuk mesin kueri yang Anda gunakan.

Bagaimana integrasi bekerja

Saat membuat bucket tabel di konsol, Amazon S3 memulai tindakan berikut untuk mengintegrasikan bucket tabel di Wilayah yang telah dipilih dengan layanan analitik: AWS

  1. Membuat peran layanan baru AWS Identity and Access Management (IAM) yang memberikan akses Lake Formation ke semua bucket tabel Anda.

  2. Menggunakan peran layanan, Lake Formation mendaftarkan bucket tabel di Wilayah saat ini. Hal ini memungkinkan Lake Formation untuk mengelola akses, izin, dan tata kelola untuk semua bucket tabel saat ini dan masa depan di Wilayah tersebut.

  3. Menambahkan s3tablescatalog katalog ke AWS Glue Data Catalog dalam Wilayah saat ini. Menambahkan s3tablescatalog katalog memungkinkan semua bucket tabel, ruang nama, dan tabel diisi dalam Katalog Data.

catatan

Tindakan ini otomatis melalui konsol Amazon S3. Jika Anda melakukan integrasi ini secara terprogram, Anda harus secara manual mengambil semua tindakan ini.

Anda mengintegrasikan ember meja Anda sekali per AWS Wilayah. Setelah integrasi selesai, semua bucket tabel saat ini dan future, namespace, dan tabel ditambahkan ke AWS Glue Data Catalog dalam Region tersebut.

Ilustrasi berikut menunjukkan bagaimana s3tablescatalog katalog secara otomatis mengisi bucket tabel, ruang nama, dan tabel di Wilayah saat ini sebagai objek yang sesuai dalam Katalog Data. Bucket meja diisi sebagai subkatalog. Ruang nama dalam keranjang tabel diisi sebagai database dalam subkatalog masing-masing. Tabel diisi sebagai tabel di database masing-masing.

Cara-cara sumber daya tabel direpresentasikan dalam AWS Glue Data Catalog.
Cara kerja izin

Sebaiknya integrasikan bucket tabel Anda dengan layanan AWS analitik sehingga Anda dapat bekerja dengan data tabel di seluruh layanan yang menggunakan AWS Glue Data Catalog sebagai penyimpanan metadata. Integrasi memungkinkan kontrol akses berbutir halus melalui. AWS Lake Formation Pendekatan keamanan ini berarti bahwa, selain izin AWS Identity and Access Management (IAM), Anda harus memberikan izin Lake Formation utama IAM Anda di tabel Anda sebelum Anda dapat bekerja dengannya.

Ada dua jenis izin utama di AWS Lake Formation:

  • Izin akses metadata mengontrol kemampuan untuk membuat, membaca, memperbarui, dan menghapus database dan tabel metadata di Katalog Data.

  • Izin akses data yang mendasari mengontrol kemampuan untuk membaca dan menulis data ke lokasi Amazon S3 yang mendasari yang ditunjuk oleh sumber daya Katalog Data.

Lake Formation menggunakan kombinasi model izinnya sendiri dan model izin IAM untuk mengontrol akses ke sumber daya Katalog Data dan data yang mendasarinya:

  • Agar permintaan mengakses sumber daya Katalog Data atau data yang mendasarinya berhasil, permintaan harus lulus pemeriksaan izin oleh IAM dan Lake Formation.

  • Izin IAM mengontrol akses ke Lake Formation dan AWS Glue APIs dan resource, sedangkan izin Lake Formation mengontrol akses ke sumber daya Katalog Data, lokasi Amazon S3, dan data yang mendasarinya.

Izin Lake Formation hanya berlaku di Wilayah di mana mereka diberikan, dan kepala sekolah harus diberi wewenang oleh administrator danau data atau kepala sekolah lain dengan izin yang diperlukan untuk diberikan izin Lake Formation.

Untuk informasi selengkapnya, lihat Ikhtisar izin Lake Formation di Panduan AWS Lake Formation Pengembang.

Pastikan Anda mengikuti langkah-langkah Prasyarat untuk integrasi dan Mengintegrasikan bucket tabel dengan AWS layanan analitik agar Anda memiliki izin yang sesuai untuk mengakses dan sumber daya tabel Anda, AWS Glue Data Catalog dan untuk bekerja dengan layanan AWS analitik.

penting

Jika Anda bukan pengguna yang melakukan integrasi bucket tabel dengan layanan AWS analitik untuk akun Anda, Anda harus diberikan izin Lake Formation yang diperlukan di atas meja. Untuk informasi selengkapnya, lihat Memberikan izin pada tabel atau database.

Prasyarat untuk integrasi

Prasyarat berikut diperlukan untuk mengintegrasikan bucket tabel dengan layanan analitik: AWS

penting

Saat membuat tabel, pastikan Anda menggunakan semua huruf kecil dalam nama tabel dan definisi tabel Anda. Misalnya, pastikan bahwa nama kolom Anda semua huruf kecil. Jika nama tabel atau definisi tabel berisi huruf kapital, tabel tidak didukung oleh AWS Lake Formation atau AWS Glue Data Catalog. Dalam hal ini, tabel Anda tidak akan terlihat oleh layanan AWS analitik seperti Amazon Athena, meskipun bucket tabel Anda terintegrasi dengan AWS layanan analitik.

Jika definisi tabel berisi huruf kapital, Anda menerima pesan galat berikut saat menjalankan SELECT kueri di Athena: “GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model. ValidationException: Sumber Daya Federasi Tidak Didukung - Nama tabel atau kolom tidak valid.”

Mengintegrasikan bucket tabel dengan AWS layanan analitik

Integrasi ini harus dilakukan satu kali per AWS Wilayah.

penting

Integrasi layanan AWS analitik sekarang menggunakan WithPrivilegedAccess opsi dalam operasi registerResource Lake Formation API untuk mendaftarkan bucket tabel S3. Integrasi juga sekarang membuat s3tablescatalog katalog di AWS Glue Data Catalog dengan menggunakan AllowFullTableExternalDataAccess opsi dalam operasi CreateCatalog AWS Glue API.

Jika Anda mengatur integrasi dengan rilis pratinjau, Anda dapat terus menggunakan integrasi Anda saat ini. Namun, proses integrasi yang diperbarui memberikan peningkatan kinerja, jadi kami sarankan untuk bermigrasi. Untuk bermigrasi ke integrasi yang diperbarui, lihatMigrasi ke proses integrasi yang diperbarui.

  1. Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Di panel navigasi kiri, pilih Bucket tabel.

  3. Pilih Buat ember meja.

    Halaman bucket Create table terbuka.

  4. Masukkan nama bucket Table dan pastikan kotak centang Aktifkan integrasi dipilih.

  5. Pilih Buat ember meja. Amazon S3 akan mencoba mengintegrasikan bucket tabel Anda secara otomatis di Wilayah tersebut.

Pertama kali Anda mengintegrasikan bucket tabel di Wilayah mana pun, Amazon S3 membuat peran layanan IAM baru atas nama Anda. Peran ini memungkinkan Lake Formation mengakses semua bucket tabel di akun Anda dan akses federasi ke tabel Anda. AWS Glue Data Catalog

Untuk mengintegrasikan ember meja menggunakan AWS CLI

Langkah-langkah berikut menunjukkan cara menggunakan bucket tabel AWS CLI untuk mengintegrasikan. Untuk menggunakan langkah-langkah ini, ganti user input placeholders dengan informasi Anda sendiri.

  1. Buat ember meja.

    aws s3tables create-table-bucket \ --region us-east-1 \ --name amzn-s3-demo-table-bucket
  2. Buat peran layanan IAM yang memungkinkan Lake Formation mengakses sumber daya tabel Anda.

    1. Buat file bernama Role-Trust-Policy.json yang berisi kebijakan kepercayaan berikut:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccessPolicy", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

      Buat peran layanan IAM dengan menggunakan perintah berikut:

      aws iam create-role \ --role-name S3TablesRoleForLakeFormation \ --assume-role-policy-document file://Role-Trust-Policy.json
    2. Buat file bernama LF-GluePolicy.json yang berisi kebijakan berikut:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationPermissionsForS3ListTableBucket", "Effect": "Allow", "Action": [ "s3tables:ListTableBuckets" ], "Resource": [ "*" ] }, { "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket", "Effect": "Allow", "Action": [ "s3tables:CreateTableBucket", "s3tables:GetTableBucket", "s3tables:CreateNamespace", "s3tables:GetNamespace", "s3tables:ListNamespaces", "s3tables:DeleteNamespace", "s3tables:DeleteTableBucket", "s3tables:CreateTable", "s3tables:DeleteTable", "s3tables:GetTable", "s3tables:ListTables", "s3tables:RenameTable", "s3tables:UpdateTableMetadataLocation", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": [ "arn:aws:s3tables:us-east-1:111122223333:bucket/*" ] } ] }

      Lampirkan kebijakan ke peran dengan menggunakan perintah berikut:

      aws iam put-role-policy \ --role-name S3TablesRoleForLakeFormation \ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --policy-document file://LF-GluePolicy.json
  3. Buat file bernama input.json yang berisi berikut ini:

    { "ResourceArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "WithFederation": true, "RoleArn": "arn:aws:iam::111122223333:role/S3TablesRoleForLakeFormation" }

    Daftarkan bucket tabel dengan Lake Formation dengan menggunakan perintah berikut:

    aws lakeformation register-resource \ --region us-east-1 \ --with-privileged-access \ --cli-input-json file://input.json
  4. Buat file bernama catalog.json yang berisi katalog berikut:

    { "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions":[], "CreateTableDefaultPermissions":[], "AllowFullTableExternalDataAccess": "True" } }

    Buat s3tablescatalog katalog dengan menggunakan perintah berikut. Membuat katalog ini mengisi dengan objek yang sesuai AWS Glue Data Catalog dengan bucket tabel, ruang nama, dan tabel.

    aws glue create-catalog \ --region us-east-1 \ --cli-input-json file://catalog.json
  5. Verifikasi bahwa s3tablescatalog katalog telah ditambahkan AWS Glue dengan menggunakan perintah berikut:

    aws glue get-catalog --catalog-id s3tablescatalog

Proses integrasi layanan AWS analitik telah diperbarui. Jika Anda telah menyiapkan integrasi dengan rilis pratinjau, Anda dapat terus menggunakan integrasi Anda saat ini. Namun, proses integrasi yang diperbarui memberikan peningkatan kinerja, jadi kami sarankan untuk bermigrasi dengan menggunakan langkah-langkah berikut. Untuk informasi selengkapnya tentang proses migrasi atau integrasi, lihat Membuat katalog Tabel Amazon S3 AWS Glue Data Catalog di Panduan AWS Lake Formation Pengembang.

  1. Buka AWS Lake Formation konsol dihttps://console.aws.amazon.com/lakeformation/, dan masuk sebagai administrator danau data. Untuk informasi selengkapnya tentang cara membuat administrator data lake, lihat Membuat administrator data lake di Panduan AWS Lake Formation Pengembang.

  2. Hapus s3tablescatalog katalog Anda dengan melakukan hal berikut:

    • Di panel navigasi kiri, pilih Katalog.

    • Pilih tombol opsi di sebelah s3tablescatalog katalog dalam daftar Katalog. Dari menu Tindakan, pilih Hapus.

  3. Batalkan pendaftaran lokasi data untuk s3tablescatalog katalog dengan melakukan hal berikut:

    • Di panel navigasi kiri, buka bagian Administrasi, dan pilih Lokasi danau data.

    • Pilih tombol opsi di sebelah lokasi danau s3tablescatalog data, misalnya,s3://tables:region:account-id:bucket/*.

    • Pada menu Tindakan, pilih Hapus.

    • Di kotak dialog konfirmasi yang muncul, pilih Hapus.

  4. Setelah menghapus s3tablescatalog katalog dan lokasi data lake, Anda dapat mengikuti langkah-langkah untuk mengintegrasikan bucket tabel Anda dengan layanan AWS analitik dengan menggunakan proses integrasi yang diperbarui.

catatan

Jika Anda ingin bekerja dengan tabel terenkripsi SSE-KMS dalam layanan AWS analitik terintegrasi, peran yang Anda gunakan harus memiliki izin untuk menggunakan kunci Anda AWS KMS untuk operasi enkripsi. Untuk informasi selengkapnya, lihat Memberikan izin kepada prinsipal IAM untuk bekerja dengan tabel terenkripsi dalam layanan analitik terintegrasi AWS.

Langkah selanjutnya

Untuk mengakses tabel Anda, Amazon Data Firehose memerlukan tautan sumber daya yang menargetkan namespace tabel Anda. Tautan sumber daya adalah objek Katalog Data yang bertindak sebagai alias atau penunjuk ke sumber daya Katalog Data lain, seperti database atau tabel. Tautan disimpan dalam Katalog Data akun atau Wilayah tempat pembuatannya. Untuk informasi selengkapnya, lihat Cara kerja tautan sumber daya di Panduan AWS Lake Formation Pengembang.

Setelah mengintegrasikan bucket tabel dengan layanan AWS analitik, Anda dapat membuat tautan sumber daya agar berfungsi dengan tabel di Amazon Data Firehose. Untuk informasi selengkapnya tentang membuat tautan ini, lihatStreaming data ke tabel dengan Amazon Data Firehose.

Memberikan izin Lake Formation pada sumber daya tabel Anda

Setelah bucket tabel Anda terintegrasi dengan layanan AWS analitik, Lake Formation mengelola akses ke sumber daya tabel Anda. Lake Formation menggunakan model izinnya sendiri (izin Lake Formation) yang memungkinkan kontrol akses berbutir halus untuk sumber daya Katalog Data. Lake Formation mengharuskan setiap kepala sekolah IAM (pengguna atau peran) diberi wewenang untuk melakukan tindakan pada sumber daya yang dikelola Lake Formation. Untuk informasi selengkapnya, lihat Ikhtisar izin Lake Formation di Panduan AWS Lake Formation Pengembang. Untuk informasi tentang berbagi data lintas akun, lihat Berbagi data lintas akun di Lake Formation di Panduan AWS Lake Formation Pengembang.

Sebelum kepala sekolah IAM dapat mengakses tabel di layanan AWS analitik, Anda harus memberi mereka izin Lake Formation pada sumber daya tersebut.

catatan

Jika Anda adalah pengguna yang melakukan integrasi bucket tabel, Anda sudah memiliki izin Lake Formation ke tabel Anda. Jika Anda satu-satunya kepala sekolah yang akan mengakses tabel Anda, Anda dapat melewati langkah ini. Anda hanya perlu memberikan izin Lake Formation di tabel Anda ke prinsipal IAM lainnya. Hal ini memungkinkan prinsipal lain untuk mengakses tabel saat menjalankan query. Untuk informasi selengkapnya, lihat Memberikan izin pada tabel atau database.

Anda harus memberikan izin Prinsipal Lake Formation IAM lainnya pada sumber daya tabel Anda untuk bekerja dengannya dalam layanan berikut:

  • Amazon Redshift

  • Amazon Data Firehose

  • Amazon QuickSight

  • Amazon Athena

Memberikan izin pada tabel atau database

Anda dapat memberikan izin utama Lake Formation pada tabel atau database dalam ember meja, baik melalui konsol Lake Formation atau. AWS CLI

catatan

Saat Anda memberikan izin Lake Formation pada sumber daya Katalog Data ke akun eksternal atau langsung ke kepala IAM di akun lain, Lake Formation menggunakan layanan AWS Resource Access Manager (AWS RAM) untuk membagikan sumber daya. Jika akun penerima hibah berada di organisasi yang sama dengan akun pemberi hibah, sumber daya bersama segera tersedia untuk penerima hibah. Jika akun penerima hibah tidak berada di organisasi yang sama, AWS RAM kirimkan undangan ke akun penerima hibah untuk menerima atau menolak hibah sumber daya. Kemudian, untuk membuat sumber daya bersama tersedia, administrator data lake di akun penerima hibah harus menggunakan AWS RAM konsol atau AWS CLI untuk menerima undangan. Untuk informasi selengkapnya tentang berbagi data lintas akun, lihat Berbagi data lintas akun di Lake Formation di Panduan AWS Lake Formation Pengembang.

Console
  1. Buka AWS Lake Formation konsol dihttps://console.aws.amazon.com/lakeformation/, dan masuk sebagai administrator danau data. Untuk informasi selengkapnya tentang cara membuat administrator data lake, lihat Membuat administrator data lake di Panduan AWS Lake Formation Pengembang.

  2. Di panel navigasi, pilih Izin data, lalu pilih Hibah.

  3. Pada halaman Izin Hibah, di bawah Prinsipal, lakukan salah satu hal berikut:

    • Untuk Amazon Athena atau Amazon Redshift, pilih pengguna dan peran IAM, dan pilih prinsipal IAM yang Anda gunakan untuk kueri.

    • Untuk Amazon Data Firehose, pilih pengguna dan peran IAM, lalu pilih peran layanan yang Anda buat untuk streaming ke tabel.

    • Untuk QuickSight, pilih pengguna dan grup SAMP, lalu masukkan Nama Sumber Daya Amazon (ARN) pengguna admin QuickSight Anda.

  4. Di bawah LF-tag atau sumber katalog, pilih Sumber daya Katalog Data Bernama.

  5. Untuk Katalog, pilih subkatalog yang Anda buat saat mengintegrasikan bucket tabel, misalnya,. account-id:s3tablescatalog/amzn-s3-demo-bucket

  6. Untuk Database, pilih namespace bucket tabel S3 yang Anda buat.

  7. (Opsional) Untuk Tabel, pilih tabel S3 yang Anda buat di bucket tabel Anda.

    catatan

    Jika Anda membuat tabel baru di editor kueri Athena, jangan pilih tabel.

  8. Lakukan salah satu tindakan berikut:

    • Jika Anda menentukan tabel di langkah sebelumnya, untuk izin Tabel, pilih Super.

    • Jika Anda tidak menentukan tabel pada langkah sebelumnya, buka izin Database. Untuk berbagi data lintas akun, Anda tidak dapat memilih Super untuk memberikan semua izin kepada prinsipal lainnya di database Anda. Sebagai gantinya, pilih lebih banyak izin berbutir halus, seperti Deskripsikan.

  9. PilihIzin.

CLI
  1. Pastikan Anda menjalankan AWS CLI perintah berikut sebagai administrator data lake. Untuk informasi selengkapnya, lihat Membuat administrator data lake di Panduan AWS Lake Formation Pengembang.

  2. Jalankan perintah berikut untuk memberikan izin Lake Formation pada tabel di bucket tabel S3 ke prinsipal IAM untuk mengakses tabel. Untuk menggunakan contoh ini, ganti user input placeholders dengan informasi Anda sendiri.

    aws lakeformation grant-permissions \ --region us-east-1 \ --cli-input-json \ '{ "Principal": { "DataLakePrincipalIdentifier": "user or role ARN, for example, arn:aws:iam::account-id:role/example-role" }, "Resource": { "Table": { "CatalogId": "account-id:s3tablescatalog/amzn-s3-demo-bucket", "DatabaseName": "S3 table bucket namespace, for example, test_namespace", "Name": "S3 table bucket table name, for example test_table" } }, "Permissions": [ "ALL" ] }'