기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon DataZone에서 작업할 때 액세스가 거부된 문제 또는 유사한 문제가 발생하는 경우 이 섹션의 주제를 참조하세요.
Amazon에 대한 AWS Lake Formation 권한 문제 해결 DataZone
이 섹션에는 에서 발생할 수 있는 문제에 대한 문제 해결 지침이 포함되어 있습니다Amazon에 대한 Lake Formation 권한 구성 DataZone.
데이터 포털의 오류 메시지 | 해결 방법 |
---|---|
데이터 액세스 역할을 수임할 수 없습니다. |
이 오류는 Amazon DataZone 이 계정DefaultDataLakeBlueprint에서 를 활성화하는 데 사용한 AmazonDataZoneGlueDataAccessRole 를 수임할 수 없는 경우 표시됩니다. 문제를 해결하려면 데이터 자산이 있는 계정의 콘솔로 AWS IAM 이동하여 AmazonDataZoneGlueDataAccessRole가 Amazon DataZone 서비스 보안 주체와 올바른 신뢰 관계가 있는지 확인합니다. 자세한 내용은 AmazonDataZoneGlueAccess-<region>-<domainId> 단원을 참조하세요. |
데이터 액세스 역할에는 구독하려는 자산의 메타데이터를 읽는 데 필요한 권한이 없습니다. |
이 오류는 Amazon이 AmazonDataZoneGlueDataAccessRole 역할을 DataZone 성공적으로 수임했지만 역할에 필요한 권한이 없는 경우에 표시됩니다. 문제를 해결하려면 데이터 자산이 있는 계정의 콘솔로 AWS IAM 이동하여 역할에 AmazonDataZoneGlueManageAccessRolePolicy 연결된 이 있는지 확인합니다. 자세한 내용은 AmazonDataZoneGlueAccess-<region>-<domainId> 단원을 참조하십시오. |
자산은 리소스 링크입니다. Amazon DataZone 은 리소스 링크에 대한 구독을 지원하지 않습니다. |
이 오류는 Amazon에 게시하려는 자산 DataZone 이 AWS Glue 테이블에 대한 리소스 링크일 때 표시됩니다. |
자산은 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
속성은 데이터 세트에서 발생하는 이벤트를 나타냅니다. 자세한 내용은 계보 노드의 키 속성을 참조하세요.
계보 노드는 해당 데이터 세트 또는 작업에서 발생하는 모든 이벤트를 나타냅니다. 계보 노드에는 해당 데이터 세트/작업의 식별자가 포함된 “sourceIdentifier” 속성이 포함되어 있습니다. 오픈 계보 이벤트를 지원하므로 sourceIdentifier
값은 기본적으로 데이터 세트, 작업 및 작업 실행에 대해 'namespace'와 'name'의 조합으로 채워집니다.
AWS Glue 및 Amazon Redshift와 같은 AWS 리소스의 경우 sourceIdentifier
는 AWS Glue AmazonARNs이 다음과 같이 실행 이벤트 ARN 및 기타 세부 정보를 구성하는 테이블 및 Redshift 테이블 DataZone 입니다.
참고
에는 모든 리소스에 대한 accountId, 리전, 데이터베이스 및 테이블과 같은 정보가 AWS ARN 포함되어 있습니다.
OpenLineage 이러한 데이터 세트의 이벤트에는 데이터베이스와 테이블 이름이 포함됩니다.
리전은 실행의 '환경 속성' 패싯에 캡처됩니다. 존재하지 않는 경우 시스템은 발신자 보안 인증 정보의 리전을 사용합니다.
AccountId 는 호출자 보안 인증 정보에서 가져옵니다.
SourceIdentifier 내의 자산에 DataZone
AssetCommonDetailForm
에는 자산이 나타내는 데이터 세트의 식별자를 나타내는 “sourceIdentifier”라는 속성이 있습니다. 자산 계보 노드를 업스트림 데이터 세트와 연결하려면 속성에 데이터 세트 노드의 와 일치하는 값을 채워야 합니다sourceIdentifier
. 데이터 소스에서 자산을 가져오는 경우 워크플로는 AWS Glue 테이블 ARN / Redshift 테이블sourceIdentifier
로 ARN 자동으로 채워지고 를 통해 생성된 다른 자산(사용자 지정 자산 포함)은 호출자가 해당 값을 채워CreateAsset
API야 합니다.
Amazon은 OpenLineage 이벤트 sourceIdentifier 에서 를 어떻게 DataZone 구성하나요?
AWS Glue 및 Redshift 자산의 경우 sourceIdentifier
는 Glue 및 Redshift 로 구성됩니다ARNs. Amazon이 이를 DataZone 구성하는 방법은 다음과 같습니다.
AWS Glue ARN
목표는 출력 계보 노드가 다음과 같은 OpenLineage 이벤트를 구성하는 sourceIdentifier
것입니다.
arn:aws:glue:us-east-1:123456789012:table/testlfdb/testlftb-1
실행이 의 데이터를 사용하는지 확인하려면 environment-properties
패싯에 특정 키워드가 있는지 AWS Glue확인합니다. 특히 이러한 지정된 필드가 있는 경우 시스템은 에서 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
목표는 출력 계보 노드가 다음과 같은 OpenLineage 이벤트를 구성하는 sourceIdentifier
것입니다.
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
및 를 제공하는GetAsset
동안 호출assetId
: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
. 이렇게 하면 를 ARNs 올바르게 구성하고 자산 노드와 연결하는 데 도움이 됩니다.
근본 원인 : RedshiftARN용 table/views contains Redshift/Redshift- OpenLineage 실행 이벤트에서 해당 데이터 세트 정보의 네임스페이스 및 이름 속성을 기반으로 하는 서버리스용 입니다.
완화 : 지정된 이름이 클러스터 또는 작업 그룹에 속하는지 여부를 알 수 있는 결정적인 방법이 없으므로 다음과 같은 휴리스틱을 사용합니다.
데이터 세트에 해당하는 “이름”에 “
redshift-serverless.amazonaws.com
”이 포함된 경우 의 일부로 redshift-serverless를 사용하며ARN, 그렇지 않으면 “redshift”로 기본 설정됩니다.위는 작업 그룹 이름의 별칭이 작동하지 않음을 의미합니다.
근본 원인 : 업스트림 데이터 세트가 사용자 지정 자산에 대해 제대로 연결되지 않았습니다.
완화 : 데이터 세트 노드(사용자 지정 노드의 경우 <namespace>/<name>)sourceIdentifier
의 와 일치하는 CreateAsset
/CreateAssetRevision
를 호출하여 자산sourceIdentifier
의 를 채워야 합니다.