이 문서에서는 Dataplex Universal Catalog 내의 메타데이터가 생성, 업데이트 또는 삭제될 때 Pub/Sub를 통해 알림을 수신하도록 Dataplex Universal Catalog 메타데이터 변경 피드를 구성하는 방법을 설명합니다.
메타데이터 변경 피드에 대한 자세한 내용은 메타데이터 변경 피드 개요를 참고하세요.
시작하기 전에
Pub/Sub 및 Dataplex Universal Catalog API를 숙지합니다.
-
Enable the Dataplex Universal Catalog and Pub/Sub APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. 알림을 수신할 Pub/Sub 주제를 만듭니다. 자세한 내용은 주제 만들기를 참고하세요.
gcloud를 설치합니다.gcloud의 짧은 별칭이 설정되어 있는지 확인합니다.gcurl의 별칭을 설정합니다. 이렇게 하면 인증 토큰이 포함된 바로가기가 생성되고 API 요청의 JSON 콘텐츠 유형이 설정됩니다.alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'DATAPLEX_API변수를 설정합니다.DATAPLEX_API="dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION"다음을 바꿉니다.
PROJECT_ID: Dataplex API가 사용 설정된 프로젝트 IDLOCATION: 작업이 실행되는 위치입니다(예:us-central1,europe-west3,asia-south1).
필수 역할 및 권한
메타데이터 변경 피드를 구성하려면 사용자와 Dataplex Universal Catalog 서비스 계정에 필요한 IAM 역할과 권한이 있어야 합니다.
사용자 역할 및 권한
메타데이터를 내보내고 메타데이터 변경 피드 메시지에 액세스하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트 또는 조직에 대해 다음 IAM 역할을 부여해 달라고 요청하세요.
-
메타데이터 내보내기:
Dataplex 항목 그룹 내보내기 작업자 (
roles/dataplex.entryGroupExporter) -
메타데이터 변경 피드 메시지에 액세스:
Pub/Sub 구독자 (
roles/pubsub.subscriber)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 메타데이터를 내보내고 메타데이터 변경 피드 메시지에 액세스하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
메타데이터를 내보내고 메타데이터 변경 피드 메시지에 액세스하려면 다음 권한이 필요합니다.
-
메타데이터 내보내기:
- 프로젝트에 대한
dataplex.metadataFeeds.create권한 -
피드의 범위를 정의하는 리소스 (조직, 프로젝트 또는 항목 그룹)에 대한
dataplex.entryGroups.export권한 - 프로젝트에 대한
resourcemanager.projects.get권한 - 프로젝트에 대한
resourcemanager.projects.list권한
- 프로젝트에 대한
-
메타데이터 변경 피드 메시지에 액세스합니다.
-
구독에 대한
pubsub.subscriptions.consume권한 -
주제에 대한
pubsub.topics.attachSubscription권한
-
구독에 대한
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
Dataplex Universal Catalog 서비스 계정 역할 및 권한
Dataplex Universal Catalog 서비스 계정에 메타데이터 변경 피드 메시지를 게시하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Dataplex Universal Catalog 서비스 계정에 Pub/Sub 주제에 대한 Pub/Sub 게시자 (roles/pubsub.publisher) IAM 역할을 부여해 달라고 요청하세요.
이 사전 정의된 역할에는 메타데이터 변경 피드 메시지를 게시하는 데 필요한 pubsub.topics.publish 권한이 포함되어 있습니다.
관리자는 커스텀 역할이나 다른 사전 정의된 역할을 사용하여 Dataplex Universal Catalog 서비스 계정에 이 권한을 부여할 수도 있습니다.
Dataplex Universal Catalog 서비스 계정에 권한 부여
Dataplex Universal Catalog 서비스 에이전트는 Dataplex API를 사용 설정할 때 생성됩니다. 다음 이메일로 서비스 에이전트를 식별할 수 있습니다.
service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
여기서 PROJECT_NUMBER는 Dataplex API를 사용 설정한 프로젝트의 프로젝트 번호입니다.
Dataplex Universal Catalog 서비스 계정에는 Pub/Sub 주제에 메시지를 게시할 수 있는 기능이 필요합니다.
이 권한을 부여하려면 Pub/Sub 주제에 서비스 계정 Pub/Sub 게시자 역할(roles/pubsub.publisher)을 부여합니다.
gcloud
gcloud pubsub topics add-iam-policy-binding 명령어를 실행합니다.
gcloud pubsub topics add-iam-policy-binding TOPIC_ID \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
--role="roles/pubsub.publisher"
다음을 바꿉니다.
TOPIC_ID: 메타데이터 변경 피드 메시지가 게시되는 Pub/Sub 주제의 ID입니다.PROJECT_NUMBER: 서비스 계정이 있는 Dataplex Universal Catalog 프로젝트의 프로젝트 번호입니다.
콘솔
Google Cloud 콘솔에서 Pub/Sub 주제 페이지로 이동합니다.
메타데이터 피드 알림에 사용할 주제를 선택하고 필요한 경우 정보 패널 표시를 클릭합니다.
권한 탭에서 주 구성원 추가를 클릭합니다.
새 주 구성원 필드에 Dataplex Universal Catalog 서비스 계정(
service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com)을 입력합니다.역할 할당 필드에서 Pub/Sub 게시자를 선택합니다.
저장을 클릭합니다.
메타데이터 변경 피드 만들기
알림을 생성하는 변경사항을 제어하려면 특정 리소스를 모니터링하도록 메타데이터 변경 피드를 구성하면 됩니다. 전체 조직, 특정 프로젝트 또는 특정 항목 그룹과 같은 범위를 지정하여 이 작업을 실행합니다. 범위를 사용하면 모니터링할 리소스를 지정할 수 있으며, 필터를 사용하면 Dataplex Universal Catalog에서 알림을 전송할 시기를 더 세부적으로 조정할 수 있습니다.
자세한 내용은 메타데이터 변경 피드를 참고하세요.
REST
메타데이터 변경 피드를 만들려면 projects.locations.metadataFeeds.create 메서드를 사용합니다.
조직 범위
다음 명령어를 실행하여 전체 조직을 모니터링하는 메타데이터 변경 피드를 만듭니다.
gcurl -X POST -d "$(cat <<EOF
{
"scope": {
"organizationLevel": true
},
"pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"
다음을 바꿉니다.
PROJECT_ID_PUBSUB: Pub/Sub 주제가 있는 프로젝트 ID(예:example-project)TOPIC_ID: 메타데이터 변경 피드 메시지가 게시되는 Pub/Sub 주제 ID입니다(예:example-topic).FEED_ID: 만들려는 메타데이터 변경 피드 ID입니다(예:example-feed).
프로젝트 범위
다음 명령어를 실행하여 특정 프로젝트를 모니터링하는 메타데이터 변경 피드를 만듭니다.
gcurl -X POST -d "$(cat <<EOF
{
"scope": {
"projects": [
"projects/PROJECT_ID_1",
"projects/PROJECT_ID_2"
]
},
"pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"
다음을 바꿉니다.
PROJECT_ID_PUBSUB: Pub/Sub 주제가 있는 프로젝트 ID(예:example-project)TOPIC_ID: 메타데이터 변경 피드 메시지가 게시되는 Pub/Sub 주제 ID입니다(예:example-topic).FEED_ID: 만들려는 메타데이터 변경 피드 ID입니다(예:example-feed).
항목 그룹 범위
다음 명령어를 실행하여 특정 항목 그룹을 모니터링하는 메타데이터 변경 피드를 만듭니다.
gcurl -X POST -d "$(cat <<EOF
{
"scope": {
"entryGroups": [
"projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID_1",
"projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID_2"
]
},
"pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"
다음을 바꿉니다.
PROJECT_ID_PUBSUB: Pub/Sub 주제가 있는 프로젝트 ID(예:example-project)LOCATION: 피드를 만들 위치(예:us-central1)ENTRY_GROUP_ID: 모니터링할 항목 그룹 ID(예:example-entry-group)TOPIC_ID: 메타데이터 변경 피드 메시지가 게시되는 Pub/Sub 주제 ID입니다(예:example-topic).FEED_ID: 만들려는 메타데이터 변경 피드 ID입니다(예:example-feed).
필터 사용
다음 명령어를 실행하여 필터가 있는 메타데이터 변경 피드를 만듭니다(항목 유형별 필터링).
gcurl -X POST -d "$(cat <<EOF
{
"scope": {
"projects": [
"projects/PROJECT_ID_1",
"projects/PROJECT_ID_2"
]
},
"filter": {
"entryTypes": [
"projects/PROJECT_ID/locations/global/entryTypes/bigquery-table"
]
},
"pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"
다음을 바꿉니다.
PROJECT_ID_PUBSUB: Pub/Sub 주제가 있는 프로젝트 ID(예:example-project)TOPIC_ID: 메타데이터 변경 피드 메시지가 게시되는 Pub/Sub 주제 ID입니다(예:example-topic).FEED_ID: 만들려는 메타데이터 변경 피드 ID입니다(예:example-feed).
응답:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.dataplex.v1.OperationMetadata",
"createTime": "2023-10-02T15:01:23Z",
"target": "projects/PROJECT_ID/locations/LOCATION/metadataFeeds/FEED_ID",
"verb": "create",
"apiVersion": "v1"
},
"done": false
}
메타데이터 변경 피드 보기
메타데이터 변경 피드의 세부정보를 볼 수 있습니다.
REST
메타데이터 변경 피드를 보려면 projects.locations.metadataFeeds.get 메서드를 사용합니다.
다음 명령어를 실행합니다.
gcurl "https://${DATAPLEX_API}/metadataFeeds/FEED_ID"
다음을 바꿉니다.
FEED_ID: 보려는 메타데이터 변경 피드 ID입니다(예:example-feed).
메타데이터 변경 피드 나열
프로젝트 및 위치의 메타데이터 변경 피드를 나열할 수 있습니다.
REST
메타데이터 변경 피드를 나열하려면 projects.locations.metadataFeeds.list 메서드를 사용합니다.
다음 명령어를 실행합니다.
gcurl "https://${DATAPLEX_API}/metadataFeeds"
메타데이터 변경 피드 업데이트
기존 메타데이터 변경 피드의 범위 또는 필터를 업데이트할 수 있습니다.
REST
메타데이터 변경 피드를 업데이트하려면 projects.locations.metadataFeeds.patch 메서드를 사용합니다.
다음 명령어를 실행하여 메타데이터 변경 피드를 업데이트하여 항목 유형 필터를 삭제합니다.
gcurl -X PATCH -d "$(cat <<EOF
{
"filter": {
"entryTypes": []
}
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds/FEED_ID?updateMask=filter"
다음을 바꿉니다.
FEED_ID: 업데이트하려는 메타데이터 변경 피드 ID입니다(예:example-feed).
메타데이터 변경 피드 삭제
더 이상 알림을 받지 않으려면 메타데이터 변경 피드를 삭제하면 됩니다.
메타데이터 변경 피드를 삭제하면 피드에서 Pub/Sub 주제에 새 메타데이터 변경사항을 게시하지 않습니다. 하지만 주제나 피드와 연결된 구독은 삭제되지 않습니다. 더 이상 필요하지 않은 경우 수동으로 삭제해야 합니다.
피드 또는 구독을 삭제하기 전에 구독자 애플리케이션이 Pub/Sub 구독의 미처리 메시지를 모두 처리했는지 확인합니다.
REST
메타데이터 변경 피드를 삭제하려면 projects.locations.metadataFeeds.delete 메서드를 사용합니다.
다음 명령어를 실행합니다.
gcurl -X DELETE \
"https://${DATAPLEX_API}/metadataFeeds/FEED_ID"
다음을 바꿉니다.
FEED_ID: 삭제하려는 메타데이터 변경 피드 ID입니다(예:example-feed).
알림 메시지 사용
메타데이터 변경 피드를 구성하면 메타데이터가 변경될 때 Dataplex Universal Catalog에서 지정된 Pub/Sub 주제에 메시지를 게시합니다. 이러한 메시지를 사용하려면 주제에 대한 Pub/Sub 구독을 만드세요.
예를 들어 풀 구독을 만들고 Google Cloud CLI를 사용하여 메시지를 볼 수 있습니다.
구독을 만듭니다.
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID다음을 바꿉니다.
SUBSCRIPTION_ID: 생성하려는 정기 결제 IDTOPIC_ID: 메타데이터 변경 피드 메시지가 게시되는 Pub/Sub 주제 ID입니다.
구독에서 메시지를 가져옵니다.
gcloud pubsub subscriptions pull SUBSCRIPTION_ID --auto-ack --limit=10다음을 바꿉니다.
SUBSCRIPTION_ID: 메시지를 가져오려는 구독 ID
Pub/Sub 메시지 처리에 대한 자세한 내용은 풀 구독에서 메시지 수신을 참고하세요. 메시지 형식에 관한 자세한 내용은 데이터 페이로드를 참고하세요.
다음 단계
- 메타데이터 변경 피드 개요를 읽습니다.
- Dataplex Universal Catalog IAM 및 액세스 제어에 대해 알아봅니다.
- 메타데이터 변경 피드 문제 해결