翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon DataZone のトラブルシューティング
Amazon DataZone を使用しているときにアクセス拒否などの問題が発生した場合は、このセクションのトピックを参照してください。
Amazon DataZone の AWS Lake Formation アクセス許可のトラブルシューティング
このセクションでは、Amazon DataZone に Lake Formation アクセス許可を設定するときに発生する可能性のある問題のトラブルシューティングの手順について説明します。
データポータルのエラーメッセージ | 解決方法 |
---|---|
データアクセスロールを引き受けることができません。 |
このエラーは、アカウントで DefaultDataLakeBlueprint を有効にするために使用した AmazonDataZoneGlueDataAccessRole を Amazon DataZone が引き受けられない場合に表示されます。この問題を解決するには、データアセットが存在するアカウントの IAM AWS コンソールに移動し、AmazonDataZone サービスプリンシパルと AmazonDataZoneGlueDataAccessRole の適切な信頼関係があることを確認します。 DataZone 詳細については、「AmazonDataZoneGlueAccess-<region>-<domainId>」を参照してください |
データアクセスロールには、サブスクライブしようとしているアセットのメタデータの読み取りに必要なアクセス許可がありません。 |
このエラーは、Amazon DataZone が AmazonDataZoneGlueDataAccessRole ロールを正常に引き受けるものの、ロールに必要なアクセス許可がない場合に表示されます。この問題を解決するには、データアセットが存在するアカウントの IAM AWS コンソールに移動し、ロールに AmazonDataZoneGlueManageAccessRolePolicy がアタッチされていることを確認します。詳細については、「AmazonDataZoneGlueAccess-<region>-<domainId>」を参照してください。 |
アセットはリソースリンクです。Amazon DataZone では、リソースリンクのサブスクリプションはサポートされません。 |
このエラーは、Amazon DataZone に発行しようとしているアセットが Glue AWS テーブルへのリソースリンクである場合に表示されます。 |
アセットは AWS Lake Formation によって管理されません。 |
このエラーは、公開するアセットに AWS Lake Formation アクセス許可が適用されていないことを示します。これは、次の場合に発生します。
|
データアクセスロールには、このアセットへのアクセスを付与するために必要な Lake Formation のアクセス許可がありません。 |
このエラーは、アカウントの DefaultDataLakeBlueprint を有効にするために使用している AmazonDataZoneGlueDataAccessRole に、公開されたアセットに対するアクセス許可を Amazon DataZone で管理するために必要なアクセス許可がないことを示します。問題を解決するには、 AWS Lake Formation 管理者として AmazonDataZoneGlueDataAccessRole を追加するか、公開するアセットの AmazonDataZoneGlueDataAccessRole に次のアクセス許可を付与します。
|
Amazon DataZone リネージュアセットとアップストリームデータセットのリンクに関するトラブルシューティング
このセクションでは、Amazon DataZone リネージュで発生する可能性のある問題のトラブルシューティング手順について説明します。一部の AWS Glue および Amazon Redshift 関連のオープンリネージュ実行イベントでは、アセットリネージュがアップストリームデータセットにリンクされていないことがあります。このトピックでは、問題を軽減するためのシナリオといくつかのアプローチについて説明します。リネージュの詳細については、「Amazon DataZone のデータリネージュ」を参照してください。
リネージュノードの SourceIdentifier
リネージュノードの sourceIdentifier
属性は、データセットで発生するイベントを表します。詳細については、「Key attributes in lineage nodes」を参照してください。
リネージュノードは、対応するデータセットまたはジョブで発生するすべてのイベントを表します。リネージュノードには、対応するデータセット/ジョブの識別子を含む「sourceIdentifier」属性が含まれています。オープンリネージュイベントはサポートされているため、sourceIdentifier
値は、データセット、ジョブ、ジョブ実行の「名前空間」と「名前」を組み合わせたものとしてデフォルトで入力されます。
AWS Glue や Amazon Redshift などの AWS リソースsourceIdentifier
の場合、 は AWS Glue テーブル ARN と Redshift テーブル ARNs になり、Amazon DataZone は次のように実行イベントやその他の詳細を構築します。
注記
では AWS、ARN には、すべてのリソースの accountId、リージョン、データベース、テーブルなどの情報が含まれます。
これらのデータセットの OpenLineage イベントには、データベースとテーブル名が含まれます。
リージョンは、実行の「環境プロパティ」ファセットで取得されます。存在しない場合、システムは呼び出し元の認証情報のリージョンを使用します。
AccountId は呼び出し元の認証情報から取得します。
DataZone 内のアセットの SourceIdentifier
AssetCommonDetailForm
には、アセットが表すデータセットの識別子を表「sourceIdentifier」という属性が含まれています。アセットリネージュノードをアップストリームデータセットにリンクするには、属性にデータセットノードの sourceIdentifier
と一致する値を入力する必要があります。アセットがデータソースによってインポートされる場合、ワークフローは AWS Glue テーブル ARN/Redshift テーブル ARN sourceIdentifier
として自動的に入力されますが、CreateAsset
API を介して作成された他のアセット (カスタムアセットを含む) には、呼び出し元によってその値が入力されている必要があります。
Amazon DataZone では sourceIdentifier は OpenLineage イベントからどのように作成されますか?
AWS Glue および Redshift アセットの場合、 sourceIdentifier
は Glue および Redshift ARNs。Amazon DataZone での作成方法は次のとおりです。
AWS Glue ARN
目標は、出力リネージュノードの sourceIdentifier
が以下のようになる OpenLineage イベントを作成することです。
arn:aws:glue:us-east-1:123456789012:table/testlfdb/testlftb-1
実行が のデータを使用しているかどうかを判断するには AWS Glue、environment-properties
ファセットに特定のキーワードがあるかどうかを確認します。特に、次の指定フィールドのいずれかが存在する場合、システムは RunEvent
が 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" } } }
AWS Glue 実行では、ファsymlinks
セットから名前を使用してデータベースとテーブル名を取得できます。この名前は ARN の構築に使用できます。
名前が databaseName.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" } ] }
サンプルの COMPLETE イベント:
{ "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" } ] } } } ] }
送信された OpenLineage
イベントに基づいて、出力リネージュノードの sourceIdentifier
は次のようになります。
arn:aws:glue:us-east-1:123456789012:table/testlfdb/testlftb-1
出力リネージュノードは、アセットの sourceIdentifier
が次の場合、アセットのリネージュノードに接続されます。
arn:aws:glue:us-east-1:123456789012:table/testlfdb/testlftb-1


Amazon Redshift ARN
目標は、出力リネージュノードの sourceIdentifier
が以下のようになる OpenLineage イベントを作成することです。
arn:aws:redshift:us-east-1:123456789012:table/workgroup-20240715/tpcds_data/public/dws_tpcds_7
システムは名前空間に基づき、入力または出力が Redshift に保存されているかどうかを判断します。特に、名前空間が redshift:// で始まるか、redshift-serverless.amazonaws.com
または redshift.amazonaws.com
の文字列を含んでいる場合は、Redshift リソースになります。
"outputs": [ { "namespace":"redshift://workgroup-20240715.123456789012.us-east-1.redshift.amazonaws.com:5439", "name":"tpcds_data.public.dws_tpcds_7" } ]
名前空間は、次の形式である必要があります。
provider://{cluster_identifier}.{region_name}:{port}
redshift-serverless
の場合:
"outputs": [ { "namespace":"redshift://workgroup-20240715.123456789012.us-east-1.redshift-serverless.amazonaws.com:5439", "name":"tpcds_data.public.dws_tpcds_7" } ]
以下の sourceIdentifier
という結果になります
arn:aws:redshift-serverless:us-east-1:123456789012:table/workgroup-20240715/tpcds_data/public/dws_tpcds_7
送信された OpenLineage イベントに基づいて、ダウンストリーム (つまり、イベントの出力) リネージュノードにマップされる sourceIdentifier
は次のようになります。
arn:aws:redshift-serverless:us-e:us-east-1:123456789012:table/workgroup-20240715/tpcds_data/public/dws_tpcds_7
これは、カタログ内のアセットのリネージュを視覚化するのに役立つマッピングです。
代替アプローチ
上記の条件がいずれも満たされない場合、システムは名前空間/名前を使用して 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" } ]
アセットリネージュノードのアップストリームの欠如に関するトラブルシューティング
アセットリネージュノードのアップストリームが表示されない場合は、トラブルシーティングとして以下を実行し、データセットにリンクされていない理由を確認してください。
domainId
とassetId
を指定して、GetAsset
を呼び出します。aws datazone get-asset --domain-identifier <domain-id> --identifier <asset-id>
次のようにレスポンスが表示されます。
{ ..... "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>", .... }
GetLineageNode
を呼び出して、データセットリネージュノードのsourceIdentifier
を取得します。対応するデータセットノードのリネージュノードを直接取得する方法がないため、GetLineageNode
でジョブの実行を開始します。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.
レスポンス例は次のようになります。
{ ..... "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" } ] }
データセットに対応するダウンストリーム/アップストリームのノード識別子 (アセットノードにリンクされていると思われるもの) を渡して、
GetLineageNode
を再度呼び出します。上記のレスポンス例を使用したサンプルコマンド:
aws datazone get-lineage-node --domain-identifier <domain-id> --identifier afymge5k4v0euf
これにより、データセットに対応するリネージュノードの詳細 (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": [ ... ] }
このデータセットノードの
sourceIdentifier
とGetAsset
からのレスポンスを比較します。リンクされていない場合は一致しないため、リネージュ UI には表示されません。
一致しないシナリオと緩和策
以下は、これらが一致しない一般的なシナリオとその緩和策です。
根本原因: テーブルが、Amazon DataZone ドメインアカウントのアカウントとは異なるアカウントにあります。
緩和策: 関連するアカウントから PostLineageEvent
操作を呼び出します。ARN を作成するための accountId
は呼び出し元の認証情報から取得されるため、開始スクリプトを実行するとき、または PostLineageEvent
を呼び出すときに、テーブルを含むアカウントからロールを引き受けます。そうすることで、ARN を正確に作成し、アセットノードにリンクできます。
根本原因: Redshift テーブル/ビューの ARN には、OpenLineage 実行イベントの対応するデータセット情報の名前空間と名前の属性に基づいた Redshift/Redshift-serverless が含まれます。
緩和策: 指定された名前がクラスターまたはワークグループに属しているかどうかを判断する決定論的な方法がないため、次のヒューリスティックを使用します。
データセットに対応する「名前」に「
redshift-serverless.amazonaws.com
」が含まれている場合は、ARN の一部として redshift-serverless が使用され、それ以外の場合はデフォルトで「redshift」が使用されます。上記は、ワークグループ名のエイリアスが機能しないことを意味します。
根本原因: カスタムアセットのアップストリームデータセットが正しくリンクされていません。
緩和策: データセットノードの sourceIdentifier
(カスタムノードの場合は <namespace>/<name>) と一致する CreateAsset
/CreateAssetRevision
を呼び出して、アセットに sourceIdentifier
を入力します。