Memecahkan Masalah Amazon DataZone - Amazon DataZone

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

Memecahkan Masalah Amazon DataZone

Jika Anda mengalami masalah yang ditolak akses atau kesulitan serupa saat bekerja dengan Amazon, DataZone lihat topik di bagian ini.

Memecahkan masalah izin AWS Lake Formation untuk Amazon DataZone

Bagian ini berisi petunjuk pemecahan masalah untuk masalah yang mungkin Anda temui saat Anda. Konfigurasikan izin Lake Formation untuk Amazon DataZone

Pesan galat di Portal Data Resolusi

Tidak dapat mengasumsikan Peran Akses Data.

Kesalahan ini ditampilkan ketika Amazon DataZone tidak dapat mengasumsikan AmazonDataZoneGlueDataAccessRolebahwa Anda digunakan untuk mengaktifkan DefaultDataLakeBlueprintdi akun Anda. Untuk memperbaiki masalah ini, buka AWS IAM konsol di akun tempat aset data Anda ada dan pastikan bahwa mereka AmazonDataZoneGlueDataAccessRolememiliki hubungan kepercayaan yang tepat dengan prinsipal DataZone layanan Amazon. Untuk informasi selengkapnya, silakan lihat AmazonDataZoneGlueAccess- <region>-< > domainId

Peran Akses Data tidak memiliki izin yang diperlukan untuk membaca metadata aset yang Anda coba berlangganan.

Kesalahan ini ditampilkan ketika Amazon DataZone berhasil mengambil AmazonDataZoneGlueDataAccessRoleperan, tetapi peran tersebut tidak memiliki izin yang diperlukan. Untuk memperbaiki masalah, buka AWS IAM konsol di akun tempat aset data Anda ada dan pastikan bahwa peran tersebut telah AmazonDataZoneGlueManageAccessRolePolicymelampirkannya. Untuk informasi selengkapnya, lihat AmazonDataZoneGlueAccess- <region>-< > domainId.

Aset adalah tautan sumber daya. Amazon DataZone tidak mendukung langganan ke tautan sumber daya.

Kesalahan ini ditampilkan ketika aset yang Anda coba publikasikan ke Amazon DataZone adalah tautan sumber daya ke tabel AWS Glue.

Aset tidak dikelola oleh AWS Lake Formation.

Kesalahan ini menunjukkan bahwa izin AWS Lake Formation tidak diberlakukan pada aset yang ingin Anda publikasikan. Ini bisa terjadi dalam kasus-kasus berikut.

  • Lokasi aset Amazon S3 tidak terdaftar di AWS Lake Formation. Untuk memperbaiki masalah, masuk ke konsol AWS Lake Formation Anda di akun tempat tabel ada dan daftarkan lokasi Amazon S3 baik dalam mode AWS Lake Formation atau mode Hybrid. Untuk informasi selengkapnya, lihat Mendaftarkan lokasi Amazon S3. Ada beberapa skenario yang membutuhkan modifikasi lebih lanjut. Ini termasuk bucket AmazonS3 terenkripsi atau bucket S3 lintas akun dan pengaturan Glue Catalog. AWS Dalam kasus seperti itu, modifikasi dalam KMS dan/atau pengaturan S3 mungkin diperlukan. Untuk informasi selengkapnya, lihat Mendaftarkan lokasi Amazon S3 terenkripsi.

  • Lokasi Amazon S3 terdaftar dalam mode AWS Lake Formation tetapi IAMAllowedPrincipalditambahkan ke izin tabel. Untuk memperbaiki masalah, Anda dapat menghapus izin IAMAllowedPrincipaldari tabel atau mendaftarkan lokasi S3 dalam mode Hybrid. Untuk informasi selengkapnya, lihat Tentang memutakhirkan ke model izin Lake Formation. Jika lokasi S3 Anda dienkripsi atau lokasi S3 berada di bagian yang berbeda dari tabel AWS Glue Anda, ikuti petunjuk di Mendaftarkan lokasi Amazon S3 terenkripsi.

Peran Akses Data tidak memiliki izin Lake Formation yang diperlukan untuk memberikan akses ke aset ini.

Kesalahan ini menunjukkan AmazonDataZoneGlueDataAccessRolebahwa yang Anda gunakan untuk mengaktifkan DefaultDataLakeBlueprintdi akun Anda tidak memiliki izin yang diperlukan bagi Amazon DataZone untuk mengelola izin pada aset yang dipublikasikan. Anda dapat menyelesaikan masalah dengan menambahkan AmazonDataZoneGlueDataAccessRolesebagai administrator AWS Lake Formation atau dengan memberikan izin berikut ke AmazonDataZoneGlueDataAccessRoleaset yang ingin Anda publikasikan.

  • Jelaskan dan Jelaskan izin yang dapat diberikan pada database tempat aset itu ada

  • Jelaskan, Pilih, Jelaskan Dapat Diberikan, Pilih Izin yang Dapat Diberikan pada semua aset dalam database acecss yang ingin Anda kelola Amazon atas nama Anda. DataZone

Memecahkan masalah penautan aset DataZone garis keturunan Amazon dengan kumpulan data hulu

Bagian ini berisi petunjuk pemecahan masalah untuk masalah yang mungkin Anda temui dengan garis keturunan Amazon DataZone . Untuk beberapa peristiwa open lineage run terkait Amazon RedShift, Anda mungkin melihat bahwa garis keturunan aset tidak ditautkan ke kumpulan data hulu. AWS Glue Topik ini menjelaskan skenario dan beberapa pendekatan untuk mengurangi masalah. Untuk informasi lebih lanjut tentang garis keturunan, lihat. Garis keturunan data di Amazon DataZone (Pratinjau)

SourceIdentifier pada simpul garis keturunan

sourceIdentifierAtribut dalam simpul garis keturunan mewakili peristiwa yang terjadi pada kumpulan data. Untuk informasi selengkapnya, lihat Atribut kunci di simpul garis keturunan.

Simpul garis keturunan mewakili semua peristiwa yang terjadi pada kumpulan data atau pekerjaan yang sesuai. Simpul garis keturunan berisi atribut "sourceIdentifier" yang berisi pengenal dataset/pekerjaan yang sesuai. Saat kami mendukung peristiwa garis keturunan terbuka, sourceIdentifier nilainya secara default diisi sebagai kombinasi “namespace” dan “name” untuk kumpulan data, pekerjaan, dan pekerjaan yang berjalan.

Untuk AWS sumber daya seperti AWS Glue dan Amazon Redshift, tabel sourceIdentifier ARN dan AWS Glue tabel Redshift ARNs tempat Amazon DataZone akan membuat run-event dan detail lainnya sebagai berikut:

catatan

Di AWS, ARN berisi informasi sepertiaccountId, wilayah, database, dan tabel untuk setiap sumber daya.

  • OpenLineage event untuk dataset ini berisi database dan nama tabel.

  • Wilayah ditangkap dalam aspek “properti lingkungan” dari lari. Jika tidak ada, sistem menggunakan wilayah dari kredenal pemanggil.

  • AccountId diambil dari kredensi penelepon.

SourceIdentifier pada aset di dalam DataZone

AssetCommonDetailFormmemiliki atribut yang disebut "sourceIdentifier" yang mewakili pengidentifikasi dataset yang diwakili oleh aset. Agar node garis keturunan aset ditautkan dengan dataset hulu, atribut harus diisi dengan nilai yang cocok dengan node dataset. sourceIdentifier Jika aset diimpor oleh sumber data, alur kerja terisi sourceIdentifier sebagai tabel AWS Glue /tabel ARN Redshift ARN secara otomatis sementara aset lain (termasuk aset kustom) yang dibuat melalui CreateAsset API seharusnya memiliki nilai tersebut diisi oleh pemanggil.

Bagaimana Amazon DataZone membangun sourceIdentifier dari OpenLineage Acara?

Aset For AWS Glue dan Redshift, dibuat dari sourceIdentifier Glue dan Redshift. ARNs Inilah cara Amazon DataZone membangunnya:

AWS Glue ARN

Tujuannya adalah untuk membangun sebuah OpenLineage Event di mana node garis keturunan keluaran adalah: sourceIdentifier

arn:aws:glue:us-east-1:123456789012:table/testlfdb/testlftb-1

Untuk menentukan apakah suatu run menggunakan data dari AWS Glue, cari keberadaan kata kunci tertentu di environment-properties faset tersebut. Secara khusus, jika salah satu bidang yang ditunjuk ini ada, sistem mengasumsikan RunEvent asalnya. AWS Glue

  • GLUE_VERSION

  • GLUE_COMMAND_CRITERIA

  • GLUE_PYTHON_VERSION

"run": { "runId":"4e3da9e8-6228-4679-b0a2-fa916119fthr", "facets":{ "environment-properties":{ "_producer":"https://github.com/OpenLineage/OpenLineage/tree/1.9.1/integration/spark", "_schemaURL":"https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunFacet", "environment-properties":{ "GLUE_VERSION":"3.0", "GLUE_COMMAND_CRITERIA":"glueetl", "GLUE_PYTHON_VERSION":"3" } } }

Untuk AWS Glue menjalankan, Anda dapat menggunakan nama dari symlinks segi untuk mendapatkan database dan nama tabel, yang dapat digunakan untuk membangun. ARN

Perlu memastikan namanya adalahdatabaseName.tableName:

"symlinks": { "_producer":"https://github.com/OpenLineage/OpenLineage/tree/1.9.1/integration/spark", "_schemaURL":"https://openlineage.io/spec/facets/1-0-0/SymlinksDatasetFacet.json#/$defs/SymlinksDatasetFacet", "identifiers":[ { "namespace":"s3://object-path", "name":"testlfdb.testlftb-1", "type":"TABLE" } ] }

Contoh COMPLETE Acara:

{ "eventTime":"2024-07-01T12:00:00.000000Z", "producer":"https://github.com/OpenLineage/OpenLineage/tree/1.9.1/integration/glue", "schemaURL":"https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunEvent", "eventType":"COMPLETE", "run": { "runId":"4e3da9e8-6228-4679-b0a2-fa916119fthr", "facets":{ "environment-properties":{ "_producer":"https://github.com/OpenLineage/OpenLineage/tree/1.9.1/integration/spark", "_schemaURL":"https://openlineage.io/spec/2-0-2/OpenLineage.json#/$defs/RunFacet", "environment-properties":{ "GLUE_VERSION":"3.0", "GLUE_COMMAND_CRITERIA":"glueetl", "GLUE_PYTHON_VERSION":"3" } } } }, "job":{ "namespace":"namespace", "name":"job_name", "facets":{ "jobType":{ "_producer":"https://github.com/OpenLineage/OpenLineage/tree/1.9.1/integration/glue", "_schemaURL":"https://openlineage.io/spec/facets/2-0-2/JobTypeJobFacet.json#/$defs/JobTypeJobFacet", "processingType":"BATCH", "integration":"glue", "jobType":"JOB" } } }, "inputs":[ { "namespace":"namespace", "name":"input_name" } ], "outputs":[ { "namespace":"namespace.output", "name":"output_name", "facets":{ "symlinks":{ "_producer":"https://github.com/OpenLineage/OpenLineage/tree/1.9.1/integration/spark", "_schemaURL":"https://openlineage.io/spec/facets/1-0-0/SymlinksDatasetFacet.json#/$defs/SymlinksDatasetFacet", "identifiers":[ { "namespace":"s3://object-path", "name":"testlfdb.testlftb-1", "type":"TABLE" } ] } } } ] }

Berdasarkan OpenLineage acara yang sourceIdentifier dikirimkan, node garis keturunan keluaran adalah:

arn:aws:glue:us-east-1:123456789012:table/testlfdb/testlftb-1

Node garis keturunan keluaran akan terhubung ke simpul garis keturunan aset di mana aset tersebut berada: sourceIdentifier

arn:aws:glue:us-east-1:123456789012:table/testlfdb/testlftb-1
Screen shot menunjukkan pengenal sumber aset.
Screen shot menunjukkan pengenal sumber aset.

Pergeseran Merah Amazon ARN

Tujuannya adalah untuk membangun sebuah OpenLineage Event di mana node garis keturunan keluaran adalah: sourceIdentifier

arn:aws:redshift:us-east-1:123456789012:table/workgroup-20240715/tpcds_data/public/dws_tpcds_7

Sistem menentukan apakah input atau output disimpan dalam Redshift berdasarkan namespace. Secara khusus, jika namespace dimulai dengan redshift://atau berisi string redshift-serverless.amazonaws.com atau, redshift.amazonaws.com itu adalah sumber daya Redshift.

"outputs": [ { "namespace":"redshift://workgroup-20240715.123456789012.us-east-1.redshift.amazonaws.com:5439", "name":"tpcds_data.public.dws_tpcds_7" } ]

Perhatikan bahwa namespace harus dalam format berikut:

provider://{cluster_identifier}.{region_name}:{port}

Untuk redshift-serverless:

"outputs": [ { "namespace":"redshift://workgroup-20240715.123456789012.us-east-1.redshift-serverless.amazonaws.com:5439", "name":"tpcds_data.public.dws_tpcds_7" } ]

Hasil dalam hal berikut sourceIdentifier

arn:aws:redshift-serverless:us-east-1:123456789012:table/workgroup-20240715/tpcds_data/public/dws_tpcds_7

Berdasarkan OpenLineage peristiwa yang dikirimkan, sourceIdentifier simpul garis keturunan yang akan dipetakan ke hilir (yaitu, output dari acara) adalah:

arn:aws:redshift-serverless:us-e:us-east-1:123456789012:table/workgroup-20240715/tpcds_data/public/dws_tpcds_7

Ini adalah pemetaan yang membantu Anda memvisualisasikan garis keturunan aset dalam katalog.

Pendekatan alternatif

Ketika tidak ada kondisi di atas yang terpenuhi, sistem menggunakan namespace/name untuk membangun: sourceIdentifier

"inputs": [ { "namespace":"arn:aws:redshift:us-east-1:123456789012:table", "name":"workgroup-20240715/tpcds_data/public/dws_tpcds_7" } ], "outputs": [ { "namespace":"arn:aws:glue:us-east-1:123456789012:table", "name":"testlfdb/testlftb-1" } ]

Memecahkan masalah kekurangan hulu untuk node garis keturunan aset

Jika Anda tidak melihat hulu node garis keturunan aset, Anda dapat melakukan hal berikut untuk memecahkan masalah mengapa node tersebut tidak ditautkan dengan kumpulan data:

  1. Memohon GetAsset sambil memberikan domainId danassetId:

    aws datazone get-asset --domain-identifier <domain-id> --identifier <asset-id>

    Responsnya muncul sebagai berikut:

    { ..... "formsOutput": [ ..... { "content": "{\"sourceIdentifier\":\"arn:aws:glue:eu-west-1:123456789012:table/testlfdb/testlftb-1\"}", "formName": "AssetCommonDetailsForm", "typeName": "amazon.datazone.AssetCommonDetailsFormType", "typeRevision": "6" }, ..... ], "id": "<asset-id>", .... }
  2. Memanggil GetLineageNode untuk mendapatkan node sourceIdentifier garis keturunan dataset. Karena tidak ada cara untuk mendapatkan simpul garis keturunan untuk node kumpulan data yang sesuai secara langsung, Anda dapat memulai dengan menjalankan GetLineageNode pekerjaan:

    aws datazone get-lineage-node --domain-identifier <domain-id> --identifier <job_namespace>.<job_name>/<run_id> if you are using the getting started scripts, job name and run ID are printed in the console and namespace is "default". Otherwise you can get these values from run event content.

    Respons sampel terlihat seperti berikut:

    { ..... "downstreamNodes": [ { "eventTimestamp": "2024-07-24T18:08:55+08:00", "id": "afymge5k4v0euf" } ], "formsOutput": [ <some forms corresponding to run and job> ], "id": "<system generated node-id for run>", "sourceIdentifier": "default.redshift.create/2f41298b-1ee7-3302-a14b-09addffa7580", "typeName": "amazon.datazone.JobRunLineageNodeType", .... "upstreamNodes": [ { "eventTimestamp": "2024-07-24T18:08:55+08:00", "id": "6wf2z27c8hghev" }, { "eventTimestamp": "2024-07-24T18:08:55+08:00", "id": "4tjbcsnre6banb" } ] }
  3. Panggil GetLineageNode lagi dengan meneruskan pengidentifikasi node hilir/hulu (yang menurut Anda harus ditautkan ke node aset) karena ini sesuai dengan kumpulan data:

    Contoh perintah menggunakan contoh respon di atas:

    aws datazone get-lineage-node --domain-identifier <domain-id> --identifier afymge5k4v0euf

    Ini mengembalikan detail simpul garis keturunan yang sesuai dengan kumpulan data: afymge5k4v0euf

    { ..... "domainId": "dzd_cklzc5s2jcr7on", "downstreamNodes": [], "eventTimestamp": "2024-07-24T18:08:55+08:00", "formsOutput": [ ..... ], "id": "afymge5k4v0euf", "sourceIdentifier": "arn:aws:redshift:us-east-1:123456789012:table/workgroup-20240715/tpcds_data/public/dws_tpcds_7", "typeName": "amazon.datazone.DatasetLineageNodeType", "typeRevision": "1", .... "upstreamNodes": [ ... ] }
  4. Bandingkan sourceIdentifier node dataset ini dan respons dariGetAsset. Jika tidak ditautkan, ini tidak akan cocok, dan karenanya tidak akan terlihat di UI garis keturunan.

Skenario dan mitigasi yang tidak cocok

Berikut ini adalah skenario yang umum diketahui di mana ini tidak akan cocok dan kemungkinan mitigasi:

Akar penyebab: Tabel hadir di akun yang berbeda dari akun DataZone domain Amazon.

Mitigasi: Anda dapat menjalankan PostLineageEvent operasi dari akun terkait. Karena accountId untuk membangun ARN diambil dari kredenal pemanggil, Anda dapat mengambil peran dari akun yang berisi tabel saat menjalankan skrip atau pemanggilan memulai. PostLineageEvent Melakukannya akan membantu dalam membangun ARNs dengan benar dan menghubungkan dengan node aset.

Akar penyebab: ARN Untuk Redshift table/views contains Redshift/Redshift -serverless berdasarkan namespace dan atribut nama dari informasi kumpulan data yang sesuai dalam acara run. OpenLineage

Mitigasi: Karena tidak ada cara deterministik untuk mengetahui apakah nama yang diberikan milik cluster atau workgroup, kami menggunakan heuristik berikut:

  • Jika “nama” yang sesuai dengan kumpulan data berisi "redshift-serverless.amazonaws.com“, kami menggunakan redshift-serverless sebagai bagian dariARN, jika tidak default ke “pergeseran merah”.

  • Di atas berarti alias pada nama workgroup tidak akan berfungsi.

Akar penyebab: Kumpulan data hulu tidak ditautkan dengan benar untuk aset khusus.

Mitigasi<name>: Pastikan untuk mengisi aset dengan memanggilCreateAsset/CreateAssetRevisionyang cocok dengan node dataset (sourceIdentifieryang akan menjadi<namespace>/untuk node khusus). sourceIdentifier