Mengatur opsi konfigurasi crawler - AWS Glue

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

Mengatur opsi konfigurasi crawler

Saat sebuah crawler berjalan, crawler tersebut mungkin mengalami perubahan pada penyimpanan data Anda yang menghasilkan sebuah skema atau partisi yang berbeda dari perayapan sebelumnya. Anda dapat menggunakan AWS Management Console atau API AWS Glue untuk mengkonfigurasi bagaimana crawler Anda memproses jenis perubahan tertentu.

Console

Bila Anda menentukan sebuah crawler menggunakan konsol AWS Glue, Anda memiliki beberapa pilihan untuk mengkonfigurasi perilaku crawler Anda. Untuk informasi tentang cara menggunakan konsol AWS Glue untuk menambahkan sebuah crawler, lihat Bekerja dengan crawler di konsol AWS Glue.

Ketika sebuah crawler berjalan terhadap penyimpanan data yang di-crawl sebelumnya, mungkin ia menemukan bahwa skema telah berubah atau bahwa beberapa objek dalam penyimpanan data telah dihapus. Crawler tersebut mencatat log perubahan skema. Tergantung pada jenis sumber crawler, tabel dan partisi baru dapat dibuat terlepas dari kebijakan perubahan skemanya.

Untuk menentukan apa yang dilakukan crawler ketika crawler tersebut menemukan perubahan dalam skema, Anda dapat memilih salah satu tindakan berikut pada konsol:

  • Memperbarui definisi tabel dalam Katalog Data — Menambahkan kolom baru, menghapus kolom yang hilang, dan mengubah definisi kolom yang ada di AWS Glue Data Catalog. Menghapus metadata yang tidak diatur oleh crawler tersebut. Ini adalah pengaturan default.

  • Menambahkan kolom baru saja — Untuk tabel yang memetakan ke penyimpanan data Amazon S3, menambahkan kolom baru seperti yang ditemukan, tetapi tidak menghapus atau mengubah jenis kolom yang ada di Katalog Data. Pilih opsi ini bila kolom saat ini dalam Katalog Data benar dan Anda tidak ingin crawler menghapus atau mengubah jenis kolom yang ada. Jika atribut tabel Amazon S3 mendasar berubah, seperti klasifikasi, jenis kompresi, atau CSV pembatas, tandai tabel sebagai tidak lagi digunakan. Mempertahankan format input dan format output seperti yang ada dalam Katalog Data. Perbarui SerDe parameter hanya jika parameternya adalah salah satu yang diatur oleh crawler. Untuk semua penyimpanan data lainnya, ubah definisi kolom yang ada.

  • Mengabaikan perubahan dan tidak memperbarui tabel di Katalog Data — Hanya tabel dan partisi baru dibuat.

    Ini adalah pengaturan default untuk perayapan tambahan.

Sebuah crawler juga dapat menemukan partisi baru atau yang diubah. Secara default, partisi baru ditambahkan dan partisi yang ada diperbarui jika mereka berubah. Selain itu, Anda dapat mengatur opsi konfigurasi crawler menjadi Perbarui semua partisi baru dan yang sudah ada dengan metadata dari tabel pada konsol AWS Glue. Ketika opsi ini disetel, partisi mewarisi properti metadata—seperti klasifikasi, format input, format keluaran, informasi, dan skema—dari tabel induknya. SerDe Setiap perubahan pada properti ini dalam sebuah tabel disebarkan ke partisi-partisinya. Bila opsi konfigurasi ini diatur pada crawler yang ada, maka partisi yang ada akan diperbarui untuk mencocokkan properti tabel induk saat eksekusi crawler berikutnya.

Untuk menentukan apa yang dilakukan crawler saat menemukan sebuah objek yang dihapus dalam penyimpanan data, pilih salah satu tindakan berikut:

  • Hapus tabel dan partisi dari Katalog Data

  • Abaikan perubahan dan jangan perbarui tabel di Katalog Data

    Ini adalah pengaturan default untuk perayapan tambahan.

  • Tandai tabel sebagai tidak lagi digunakan dalam Katalog Data — Ini adalah pengaturan default.

AWS CLI
aws glue create-crawler \ --name "your-crawler-name" \ --role "your-iam-role-arn" \ --database-name "your-database-name" \ --targets 'S3Targets=[{Path="s3://your-bucket-name/path-to-data"}]' \ --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": {"AddOrUpdateBehavior": "InheritFromTable"}, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
API

Bila Anda menentukan sebuah crawler dengan menggunakan API AWS Glue, maka Anda dapat memilih dari beberapa bidang untuk mengkonfigurasi crawler Anda. SchemaChangePolicy di API crawler menentukan apa yang dilakukan crawler saat menemukan terjadinya perubahan skema atau objek yang dihapus. Crawler mencatat skema perubahan saat berjalan.

Contoh kode python yang menunjukkan opsi konfigurasi crawler

import boto3 import json # Initialize a boto3 client for AWS Glue glue_client = boto3.client('glue', region_name='us-east-1') # Replace 'us-east-1' with your desired AWS region # Define the crawler configuration crawler_configuration = { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } } configuration_json = json.dumps(crawler_configuration) # Create the crawler with the specified configuration response = glue_client.create_crawler( Name='your-crawler-name', # Replace with your desired crawler name Role='crawler-test-role', # Replace with the ARN of your IAM role for Glue DatabaseName='default', # Replace with your target Glue database name Targets={ 'S3Targets': [ { 'Path': "s3://your-bucket-name/path/", # Replace with your S3 path to the data }, ], # Include other target types like 'JdbcTargets' if needed }, Configuration=configuration_json, # Include other parameters like Schedule, Classifiers, TablePrefix, SchemaChangePolicy, etc., as needed ) print(response)a

Ketika sebuah crawler berjalan, tabel baru dan partisi selalu dibuat terlepas dari kebijakan perubahan skema. Anda dapat memilih salah satu tindakan berikut di bidang UpdateBehavior dalam struktur SchemaChangePolicy untuk menentukan apa yang harus dilakukan crawler tidak ketika crawler tersebut menemukan skema tabel yang berubah:

  • UPDATE_IN_DATABASE — Memperbarui tabel di AWS Glue Data Catalog. Menambahkan kolom baru, menghapus kolom yang hilang, dan mengubah definisi kolom yang sudah ada. Menghapus metadata yang tidak diatur oleh crawler tersebut.

  • LOG — Mengabaikan perubahan, dan tidak memperbarui tabel di Katalog Data.

    Ini adalah pengaturan default untuk perayapan tambahan.

Anda juga dapat mengganti struktur SchemaChangePolicy menggunakan sebuah objek JSON yang disediakan dalam bidang Configuration API crawler. Objek JSON ini dapat berisi pasangan nilai kunci untuk mengatur kebijakan untuk tidak memperbarui kolom yang ada dan hanya menambahkan kolom baru. Sebagai contoh, berikan objek JSON berikut sebagai string:

{ "Version": 1.0, "CrawlerOutput": { "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } }

Opsi ini sesuai dengan opsi Tambahkan kolom baru saja pada konsol AWS Glue. Ia menggantikan struktur SchemaChangePolicy untuk tabel yang dihasilkan dari perayapan penyimpanan data Amazon S3 saja. Pilih opsi ini jika Anda ingin mempertahankan metadata yang ada di Katalog Data (sumber kebenaran). Kolom baru ditambahkan saat mereka ditemui, termasuk tipe data bersarang. Tapi kolom yang ada tidak dihapus, dan jenisnya tidak berubah. Jika atribut tabel Amazon S3 berubah secara signifikan, tandai tabel sebagai tidak lagi digunakan, dan mencatat log peringatan bahwa atribut yang tidak kompatibel perlu diubah. Opsi ini tidak berlaku untuk crawler inkremental.

Ketika sebuah crawler berjalan terhadap penyimpanan data yang di-crawl sebelumnya, crawler mungkin menemukan partisi baru atau partisi yang diubah. Secara default, partisi baru ditambahkan dan partisi yang ada diperbarui jika mereka berubah. Selain itu, Anda dapat mengatur opsi konfigurasi crawler ke InheritFromTable (sesuai dengan opsi Perbarui semua partisi baru dan yang sudah ada dengan metadata dari tabel pada konsol AWS Glue). Ketika opsi ini diatur, partisi mewarisi properti metadata dari tabel induknya, seperti klasifikasi, format input, format output, SerDe informasi, dan skema. Setiap perubahan properti pada tabel induk disebarkan ke partisi-partisinya.

Bila opsi konfigurasi ini diatur pada crawler yang ada, maka partisi yang ada akan diperbarui untuk mencocokkan properti tabel induk saat eksekusi crawler berikutnya. Perilaku ini diatur di bidang Configuration API crawler. Sebagai contoh, berikan objek JSON berikut sebagai string:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }

Bidang Configuration API crawler dapat mengatur beberapa pilihan konfigurasi. Sebagai contoh, untuk mengkonfigurasi output crawler baik untuk partisi ataupun tabel, Anda dapat memberikan sebuah representasi string dari objek JSON berikut:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } } }

Anda dapat memilih salah satu tindakan berikut untuk menentukan apa yang dilakukan crawler saat menemukan objek yang dihapus dalam penyimpanan data. Bidang DeleteBehavior dalam struktur SchemaChangePolicy di API crawler menetapkan perilaku crawler ketika crawler menemukan objek yang dihapus.

  • DELETE_FROM_DATABASE — Menghapus tabel dan partisi dari Katalog Data.

  • LOG — Mengabaikan perubahannya. Jangan memperbarui Katalog Data. Tulis pesan log sebagai gantinya.

  • DEPRECATE_IN_DATABASE — Tandai tabel sebagai tidak lagi digunakan dalam Katalog Data. Ini adalah pengaturan default.

Mengatur opsi konfigurasi crawler indeks partisi

Katalog Data mendukung indeks partisi untuk menyediakan pencarian yang efisien untuk partisi tertentu. Untuk informasi selengkapnya, lihat Bekerja dengan indeks partisi di AWS Glue. AWS GlueCrawler membuat indeks partisi untuk target Amazon S3 dan Delta Lake dengan tuli.

Saat Anda mendefinisikan cralwer, opsi untuk Membuat indeks partisi secara otomatis diaktifkan secara default di bawah Opsi lanjutan pada halaman Set output dan penjadwalan.

Untuk menonaktifkan opsi ini, Anda dapat membatalkan pilihan kotak centang Buat indeks partisi secara otomatis di konsol. Anda juga dapat menonaktifkan opsi ini dengan menggunakan crawler API, atur CreatePartitionIndex di. Configuration Nilai default-nya adalah betul.

Catatan penggunaan untuk indeks partisi

  • Tabel yang dibuat oleh crawler tidak memiliki variabel secara partition_filtering.enabled default. Untuk informasi selengkapnya, lihat pengindeksan dan pemfilteran AWS Glue partisi.

  • Membuat indeks partisi untuk partisi terenkripsi tidak didukung.

Bagaimana mencegah crawler mengubah skema yang ada

Jika Anda tidak ingin crawler menimpa pembaruan yang Anda buat ke bidang yang ada dalam definisi tabel Amazon S3, maka Anda harus memilih opsi di konsol untuk Tambahkan kolom baru saja atau tetapkan opsi konfigurasi MergeNewColumns. Hal ini berlaku untuk tabel dan partisi, kecuali Partitions.AddOrUpdateBehavior diganti ke InheritFromTable.

Jika Anda tidak ingin skema tabel berubah sama sekali saat sebuah crawler berjalan, tetapkan kebijakan perubahan skema ke LOG. Anda juga dapat mengatur opsi konfigurasi yang menetapkan skema partisi untuk mewarisi dari tabel tersebut.

Jika Anda mengkonfigurasi crawler di konsol, Anda dapat memilih tindakan-tindakan berikut:

  • Abaikan perubahan dan jangan perbarui tabel di Katalog Data

  • Perbarui semua partisi baru dan yang sudah ada dengan metadata dari tabel

Saat Anda mengkonfigurasi crawler tersebut menggunakan API, atur parameter berikut:

  • Atur bidang UpdateBehavior dalam struktur SchemaChangePolicy ke LOG.

  • Atur bidang Configuration dengan representasi string dari objek JSON berikut dalam API crawler; sebagai contoh:

    { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }

Cara membuat skema tunggal untuk setiap Amazon S3 termasuk jalur

Secara default, ketika sebuah crawler mendefinisikan tabel untuk data yang disimpan di Amazon S3, ia mempertimbangkan kompatibilitas data dan kemiripan skemanya. Faktor kompatibilitas data yang dianggap termasuk apakah data mempunyai format yang sama (misalnya, JSON), mempunyai jenis kompresi yang sama (misalnya, GZIP), struktur path Amazon S3, dan atribut data lainnya. Skema kesamaan menjadi sebuah ukuran seberapa dekat keserupaan antara skema objek Amazon S3 yang terpisah.

Anda dapat mengkonfigurasi sebuah crawler CombineCompatibleSchemas ke dalam definisi tabel umum bila memungkinkan. Dengan pilihan ini, crawler tersebut masih mempertimbangkan kompatibilitas data, namun mengabaikan kesamaan skema spesifik saat mengevaluasi objek Amazon S3 di penyertaan path yang ditentukan.

Jika Anda mengkonfigurasi crawler tersebut di konsol, untuk menggabungkan skema, pilih opsi crawler Buat skema tunggal untuk setiap path S3.

Saat Anda mengkonfigurasi crawler tersebut menggunakan API, atur opsi konfigurasi berikut:

  • Atur bidang Configuration dengan representasi string dari objek JSON berikut dalam API crawler; sebagai contoh:

    { "Version": 1.0, "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" } }

Untuk membantu mengilustrasikan opsi ini, anggaplah Anda menentukan sebuah crawler dengan penyertaan path s3://bucket/table1/. Ketika crawler tersebut berjalan, ia menemukan dua file JSON dengan karakteristik sebagai berikut:

  • File 1S3://bucket/table1/year=2017/data1.json

  • Isi file{“A”: 1, “B”: 2}

  • SkemaA:int, B:int

  • File 2S3://bucket/table1/year=2018/data2.json

  • Isi file{“C”: 3, “D”: 4}

  • SkemaC: int, D: int

Secara default, crawler menciptakan dua tabel, bernama year_2017 dan year_2018 karena skema tidak cukup mirip. Namun demikian, jika pilihan Buat skema tunggal untuk setiap path S3 dipilih, dan jika data kompatibel, maka crawler akan membuat satu tabel. Tabel ini memiliki skema A:int,B:int,C:int,D:int dan partitionKey year:string.

Cara menentukan lokasi tabel dan tingkat partisi

Secara default, ketika sebuah crawler mendefinisikan tabel untuk data yang disimpan di Amazon S3, maka crawler tersebut akan mencoba menggabungkan skema bersama-sama dan membuat tabel tingkat atas (year=2019). Dalam beberapa kasus, Anda mungkin mengharapkan sebuah crawler membuat tabel untuk folder month=Jan namun crawler membuat partisi karena folder saudara (month=Mar) digabung ke dalam tabel yang sama.

Opsi crawler tingkat tabel memberikan fleksibilitas untuk memberitahu crawler di mana tabel berada, dan bagaimana Anda ingin membuat partisi. Bila Anda menentukan sebuah Tingkat tabel, tabel tersebut dibuat pada tingkat absolut dari bucket Amazon S3.

Pengelompokan crawler dalam grup dengan tingkat tabel yang ditentukan sebagai tingkat 2.

Saat mengkonfigurasi crawler di konsol, Anda dapat menentukan nilai untuk opsi crawler Tingkat tabel. Nilai-nya harus bilangan bulat positif yang menunjukkan lokasi tabel (tingkat absolut dalam set data). Tingkat untuk folder tingkat atas adalah 1. Misalnya, untuk path mydataset/year/month/day/hour, jika tingkat diatur ke 3, maka tabel dibuat di lokasi mydataset/year/month.

Console
Menentukan sebuah tingkat tabel dalam konfigurasi crawler.
API

Saat Anda mengonfigurasi crawler menggunakan API, atur Configuration bidang dengan representasi string dari objek JSON berikut; misalnya:

configuration = jsonencode( { "Version": 1.0, "Grouping": { TableLevelConfiguration = 2 } })
CloudFormation

Dalam contoh ini, Anda mengatur opsi Table level yang tersedia di konsol dalam CloudFormation template Anda:

"Configuration": "{ \"Version\":1.0, \"Grouping\":{\"TableLevelConfiguration\":2} }"

Cara menentukan jumlah maksimum tabel yang diizinkan untuk dibuat oleh crawler

Anda dapat secara opsional menentukan jumlah maksimum tabel yang diizinkan untuk dibuat oleh crawler dengan menentukan melalui konsol AWS Glue atau CLI. TableThreshold Jika tabel yang terdeteksi oleh crawler selama perayapan lebih besar dari nilai input ini, crawl gagal dan tidak ada data yang ditulis ke Katalog Data.

Parameter ini berguna ketika tabel yang akan dideteksi dan dibuat oleh crawler jauh lebih besar dari yang Anda harapkan. Mungkin ada beberapa alasan untuk ini, seperti:

  • Saat menggunakan AWS Glue pekerjaan untuk mengisi lokasi Amazon S3 Anda, Anda dapat berakhir dengan file kosong pada tingkat yang sama dengan folder. Dalam kasus seperti itu ketika Anda menjalankan crawler di lokasi Amazon S3 ini, crawler membuat beberapa tabel karena file dan folder hadir pada tingkat yang sama.

  • Jika Anda tidak mengonfigurasi, "TableGroupingPolicy": "CombineCompatibleSchemas" Anda mungkin berakhir dengan lebih banyak tabel dari yang diharapkan.

Anda menentukan TableThreshold sebagai nilai integer lebih besar dari 0. Nilai ini dikonfigurasi berdasarkan per crawler. Artinya, untuk setiap crawl nilai ini dipertimbangkan. Misalnya: crawler memiliki TableThreshold nilai yang ditetapkan sebagai 5. Di setiap crawl AWS Glue membandingkan jumlah tabel yang terdeteksi dengan nilai ambang tabel ini (5) dan jika jumlah tabel yang terdeteksi kurang dari 5, AWS Glue tulis tabel ke Katalog Data dan jika tidak, crawl gagal tanpa menulis ke Katalog Data.

Konsol

Untuk mengatur TableThreshold menggunakan AWS konsol:

Bagian Output dan penjadwalan AWS konsol yang menunjukkan parameter ambang batas tabel maksimum.
CLI

Untuk mengatur TableThreshold menggunakan AWS CLI:

"{"Version":1.0, "CrawlerOutput": {"Tables":{"AddOrUpdateBehavior":"MergeNewColumns", "TableThreshold":5}}}";

Pesan galat dicatat untuk membantu Anda mengidentifikasi jalur tabel dan membersihkan data Anda. Contoh log di akun Anda jika crawler gagal karena jumlah tabel lebih besar dari nilai ambang tabel yang disediakan:

Table Threshold value = 28, Tables detected - 29

Di CloudWatch, kami mencatat semua lokasi tabel yang terdeteksi sebagai pesan INFO. Kesalahan dicatat sebagai alasan kegagalan.

ERROR com.amazonaws.services.glue.customerLogs.CustomerLogService - CustomerLogService received CustomerFacingException with message The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. Failing crawler without writing to Data Catalog. com.amazonaws.services.glue.exceptions.CustomerFacingInternalException: The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. Failing crawler without writing to Data Catalog.

Cara menentukan opsi konfigurasi untuk penyimpanan data Delta Lake

Saat Anda mengonfigurasi crawler untuk penyimpanan data Delta Lake, Anda menentukan parameter konfigurasi ini:

Koneksi

Secara opsional pilih atau tambahkan koneksi Jaringan untuk digunakan dengan target Amazon S3 ini. Untuk informasi tentang koneksi, lihat Menghubungkan ke data.

Buat tabel untuk kueri

Pilih bagaimana Anda ingin membuat tabel Delta Lake:

  • Buat tabel Native: Izinkan integrasi dengan mesin kueri yang mendukung kueri log transaksi Delta secara langsung.

  • Buat tabel Symlink: Buat folder manifes symlink dengan file manifes yang dipartisi oleh kunci partisi, berdasarkan parameter konfigurasi yang ditentukan.

Aktifkan manifes tulis (hanya dapat dikonfigurasi yang telah Anda pilih untuk Membuat tabel Symlink untuk sumber Delta Lake

Pilih apakah akan mendeteksi metadata tabel atau perubahan skema di log transaksi Delta Lake; itu meregenerasi file manifes. Anda tidak boleh memilih opsi ini jika Anda mengonfigurasi pembaruan manifes otomatis dengan Delta LakeSET TBLPROPERTIES.

Sertakan jalur meja danau delta

Tentukan satu atau beberapa jalur Amazon S3 ke tabel Delta sebagai s3://bucket/prefix/object.

Menentukan perayapan penyimpanan data Delta Lake.

Cara mengonfigurasi crawler untuk menggunakan kredensil Lake Formation

Anda dapat mengonfigurasi crawler untuk menggunakan AWS Lake Formation kredensil untuk mengakses penyimpanan data Amazon S3 atau tabel Katalog Data dengan lokasi Amazon S3 yang mendasarinya dalam hal yang sama atau lainnya. Akun AWS Akun AWS Anda dapat mengonfigurasi tabel Katalog Data yang ada sebagai target crawler, jika crawler dan tabel Katalog Data berada di akun yang sama. Saat ini, hanya satu target katalog dengan satu tabel katalog yang diizinkan saat menggunakan tabel Katalog Data sebagai target cralwer.

catatan

Saat Anda mendefinisikan tabel Katalog Data sebagai target crawler, pastikan lokasi dasar tabel Katalog Data adalah lokasi Amazon S3. Crawler yang menggunakan kredensil Lake Formation hanya mendukung target Katalog Data dengan lokasi Amazon S3 yang mendasarinya.

Penyiapan diperlukan saat crawler dan lokasi Amazon S3 terdaftar atau tabel Katalog Data berada di akun yang sama (perayapan dalam akun)

Untuk mengizinkan crawler mengakses penyimpanan data atau tabel Katalog Data dengan menggunakan kredensil Lake Formation, Anda perlu mendaftarkan lokasi data dengan Lake Formation. Selain itu, peran IAM crawler harus memiliki izin untuk membaca data dari tujuan tempat bucket Amazon S3 terdaftar.

Anda dapat menyelesaikan langkah-langkah konfigurasi berikut menggunakan AWS Management Console or AWS Command Line Interface (AWS CLI).

AWS Management Console
  1. Sebelum mengonfigurasi crawler untuk mengakses sumber crawler, daftarkan lokasi data penyimpanan data atau Katalog Data dengan Lake Formation. Di konsol Lake Formation (https://console.aws.amazon.com/lakeformation/), daftarkan lokasi Amazon S3 sebagai lokasi root danau data Anda di Akun AWS tempat crawler ditentukan. Untuk informasi selengkapnya, lihat Mendaftarkan lokasi Amazon S3.

  2. Berikan izin lokasi Data ke peran IAM yang digunakan untuk menjalankan crawler sehingga crawler dapat membaca data dari tujuan di Lake Formation. Untuk informasi selengkapnya, lihat Memberikan izin lokasi data (akun yang sama).

  3. Berikan izin akses peran crawler (Create) ke database, yang ditetapkan sebagai database keluaran. Untuk informasi selengkapnya, lihat Memberikan izin database menggunakan konsol Lake Formation dan metode sumber daya bernama.

  4. Di konsol IAM (https://console.aws.amazon.com/iam/), buat peran IAM untuk crawler. Tambahkan lakeformation:GetDataAccess kebijakan ke peran.

  5. Di AWS Glue konsol (https://console.aws.amazon.com/glue/), saat mengonfigurasi crawler, pilih opsi Gunakan kredenal Lake Formation untuk merayapi sumber data Amazon S3.

    catatan

    Bidang accountID bersifat opsional untuk crawling dalam akun.

AWS CLI
aws glue --profile demo create-crawler --debug --cli-input-json '{ "Name": "prod-test-crawler", "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role", "DatabaseName": "prod-run-db", "Description": "", "Targets": { "S3Targets":[ { "Path": "s3://crawl-testbucket" } ] }, "SchemaChangePolicy": { "UpdateBehavior": "LOG", "DeleteBehavior": "LOG" }, "RecrawlPolicy": { "RecrawlBehavior": "CRAWL_EVERYTHING" }, "LineageConfiguration": { "CrawlerLineageSettings": "DISABLE" }, "LakeFormationConfiguration": { "UseLakeFormationCredentials": true, "AccountId": "111122223333" }, "Configuration": { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } }, "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" } }, "CrawlerSecurityConfiguration": "", "Tags": { "KeyName": "" } }'

Penyiapan diperlukan saat crawler dan lokasi Amazon S3 terdaftar berada di akun yang berbeda (crawling lintas akun)

Untuk mengizinkan crawler mengakses penyimpanan data di akun lain menggunakan kredensil Lake Formation, Anda harus terlebih dahulu mendaftarkan lokasi data Amazon S3 dengan Lake Formation. Kemudian, Anda memberikan izin lokasi data ke akun crawler dengan mengambil langkah-langkah berikut.

Anda dapat menyelesaikan langkah-langkah berikut menggunakan AWS Management Console atauAWS CLI.

AWS Management Console
  1. Di akun tempat lokasi Amazon S3 terdaftar (akun B):

    1. Daftarkan jalur Amazon S3 dengan Lake Formation. Untuk informasi selengkapnya, lihat Mendaftarkan lokasi Amazon S3.

    2. Berikan izin lokasi Data ke akun (akun A) tempat crawler akan dijalankan. Untuk informasi selengkapnya, lihat Memberikan izin lokasi data.

    3. Buat database kosong di Lake Formation dengan lokasi yang mendasarinya sebagai lokasi target Amazon S3. Untuk informasi selengkapnya, lihat Membuat database.

    4. Berikan akun A (akun tempat crawler akan dijalankan) akses ke database yang Anda buat pada langkah sebelumnya. Untuk informasi selengkapnya, lihat Memberikan izin database.

  2. Di akun tempat crawler dibuat dan akan dijalankan (akun A):

    1. Menggunakan AWS RAM konsol, terima database yang dibagikan dari akun eksternal (akun B). Untuk informasi selengkapnya, lihat Menerima undangan berbagi sumber daya dari AWS Resource Access Manager.

    2. Buat peran IAM untuk crawler. Tambahkan lakeformation:GetDataAccess kebijakan ke peran.

    3. Di konsol Lake Formation (https://console.aws.amazon.com/lakeformation/), berikan izin lokasi Data pada lokasi Amazon S3 target ke peran IAM yang digunakan untuk crawler run sehingga crawler dapat membaca data dari tujuan di Lake Formation. Untuk informasi selengkapnya, lihat Memberikan izin lokasi data.

    4. Buat tautan sumber daya pada database bersama. Untuk informasi selengkapnya, lihat Membuat tautan sumber daya.

    5. Berikan izin akses peran crawler (Create) pada database bersama dan (Describe) tautan sumber daya. Tautan sumber daya ditentukan dalam output untuk crawler.

    6. Di AWS Glue konsol (https://console.aws.amazon.com/glue/), saat mengonfigurasi crawler, pilih opsi Gunakan kredenal Lake Formation untuk merayapi sumber data Amazon S3.

      Untuk perayapan lintas akun, tentukan Akun AWS ID tempat lokasi Amazon S3 target terdaftar di Lake Formation. Untuk perayapan dalam akun, bidang accountID bersifat opsional.

AWS CLI
aws glue --profile demo create-crawler --debug --cli-input-json '{ "Name": "prod-test-crawler", "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role", "DatabaseName": "prod-run-db", "Description": "", "Targets": { "S3Targets":[ { "Path": "s3://crawl-testbucket" } ] }, "SchemaChangePolicy": { "UpdateBehavior": "LOG", "DeleteBehavior": "LOG" }, "RecrawlPolicy": { "RecrawlBehavior": "CRAWL_EVERYTHING" }, "LineageConfiguration": { "CrawlerLineageSettings": "DISABLE" }, "LakeFormationConfiguration": { "UseLakeFormationCredentials": true, "AccountId": "111111111111" }, "Configuration": { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } }, "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" } }, "CrawlerSecurityConfiguration": "", "Tags": { "KeyName": "" } }'
catatan
  • Crawler yang menggunakan kredensi Lake Formation hanya didukung untuk target Amazon S3 dan Katalog Data.

  • Untuk target yang menggunakan penjual kredensi Lake Formation, lokasi Amazon S3 yang mendasarinya harus termasuk dalam ember yang sama. Misalnya, pelanggan dapat menggunakan beberapa target (s3://bucket1/folder1, s3://bucket1/folder2) selama semua lokasi target berada di bawah ember yang sama (bucket1). Menentukan bucket yang berbeda (s3://bucket1/folder1, s3://bucket2/folder2) tidak diperbolehkan.

  • Saat ini untuk crawler target Katalog Data, hanya satu target katalog dengan satu tabel katalog yang diizinkan.