Flow Service API를 사용하여 HTTP API 스트리밍 연결 만들기
플로우 서비스는 Adobe Experience Platform 내의 다양한 소스에서 고객 데이터를 수집하고 중앙 집중화하는 데 사용됩니다. 이 서비스는 지원되는 모든 소스가 연결 가능한 사용자 인터페이스와 RESTful API를 제공합니다.
이 자습서에서는 Flow Service API를 사용하여 Flow Service API를 사용하여 스트리밍 연결을 만드는 단계를 안내합니다.
시작하기
이 안내서를 사용하려면 Adobe Experience Platform의 다음 구성 요소에 대해 이해하고 있어야 합니다.
- Experience Data Model (XDM): Platform에서 경험 데이터를 구성하는 표준화된 프레임워크입니다.
- Real-Time Customer Profile: 여러 원본에서 집계한 데이터를 기반으로 통합 소비자 프로필을 실시간으로 제공합니다.
또한 스트리밍 연결을 만들려면 타겟 XDM 스키마와 데이터 세트가 있어야 합니다. 이러한 데이터를 만드는 방법에 대해 알아보려면 레코드 데이터 스트리밍에 대한 자습서 또는 시계열 데이터 스트리밍에 대한 자습서를 참조하십시오.
Platform API 사용
Platform API를 성공적으로 호출하는 방법에 대한 자세한 내용은 Platform API 시작에 대한 안내서를 참조하십시오.
기본 연결 만들기
기본 연결은 소스를 지정하고 흐름이 스트리밍 수집 API와 호환되도록 하는 데 필요한 정보를 포함합니다. 기본 연결을 만들 때 인증되지 않은 연결과 인증된 연결을 만들 수 있는 옵션이 있습니다.
인증되지 않은 연결
인증되지 않은 연결은 데이터를 플랫폼으로 스트리밍할 때 만들 수 있는 표준 스트리밍 연결입니다.
인증되지 않은 기본 연결을 만들려면 연결 이름, 데이터 형식 및 HTTP API 연결 사양 ID를 제공하는 동안 /connections
끝점에 POST 요청을 합니다. 이 ID는 bc7b00d6-623a-4dfc-9fdb-f1240aeadaeb
입니다.
API 형식
POST /flowservice/connections
요청
다음 요청은 HTTP API에 대한 기본 연결을 만듭니다.
code language-shell |
---|
|
code language-shell |
---|
|
name
description
connectionSpec.id
bc7b00d6-623a-4dfc-9fdb-f1240aeadaeb
입니다.auth.params.dataType
xdm
및 raw
입니다.auth.params.name
응답
성공한 응답은 고유 식별자(id
)를 포함하여 새로 생성된 연결의 세부 정보와 함께 HTTP 상태 201을 반환합니다.
{
"id": "a59d368a-1152-4673-a46e-bd52e8cdb9a9",
"etag": "\"f50185ed-0000-0200-0000-637e8fad0000\""
}
id
id
입니다.etag
인증된 연결
인증된 연결은 신뢰할 수 있는 원본과 신뢰할 수 없는 원본에서 오는 레코드를 구별해야 할 때 사용해야 합니다. PII(개인 식별 정보)가 있는 정보를 전송하려는 사용자는 Platform으로 정보를 스트리밍할 때 인증된 연결을 만들어야 합니다.
인증된 기본 연결을 만들려면 요청에 authenticationRequired
매개 변수를 포함하고 해당 값을 true
(으)로 지정해야 합니다. 이 단계에서는 인증된 기본 연결에 대한 소스 ID를 제공할 수도 있습니다. 이 매개 변수는 선택 사항이며, 지정하지 않을 경우 name
특성과 동일한 값을 사용합니다.
API 형식
POST /flowservice/connections
요청
다음 요청은 HTTP API에 대한 인증된 기본 연결을 만듭니다.
code language-shell |
---|
|
code language-shell |
---|
|
auth.params.sourceId
name
특성과 동일한 값을 사용합니다.auth.params.authenticationRequired
authenticationRequired
이(가) true
(으)로 설정된 경우 스트리밍 연결에 대한 인증을 제공해야 합니다. authenticationRequired
이(가) false
(으)로 설정된 경우 인증이 필요하지 않습니다.응답
성공한 응답은 고유 식별자(id
)를 포함하여 새로 생성된 연결의 세부 정보와 함께 HTTP 상태 201을 반환합니다.
{
"id": "a59d368a-1152-4673-a46e-bd52e8cdb9a9",
"etag": "\"f50185ed-0000-0200-0000-637e8fad0000\""
}
스트리밍 끝점 URL 가져오기
기본 연결이 만들어지면 스트리밍 끝점 URL을 검색할 수 있습니다.
API 형식
GET /flowservice/connections/{BASE_CONNECTION_ID}
{BASE_CONNECTION_ID}
id
값입니다.요청
curl -X GET https://platform.adobe.io/data/foundation/flowservice/connections/{BASE_CONNECTION_ID} \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
응답
성공적인 응답은 요청된 연결에 대한 자세한 정보와 함께 HTTP 상태 200을 반환합니다. 스트리밍 끝점 URL은 연결을 통해 자동으로 만들어지며 inletUrl
값을 사용하여 검색할 수 있습니다.
{
"items": [
{
"id": "a59d368a-1152-4673-a46e-bd52e8cdb9a9",
"createdAt": 1669238699119,
"updatedAt": 1669238699119,
"createdBy": "acme@AdobeID",
"updatedBy": "acme@AdobeID",
"createdClient": "{CREATED_CLIENT}",
"updatedClient": "{UPDATED_CLIENT}",
"sandboxId": "{SANDBOX_ID}",
"sandboxName": "{SANDBOX_NAME}",
"imsOrgId": "{ORG_ID}",
"name": "ACME Streaming Connection XDM Data",
"description": "ACME streaming connection for customer data",
"connectionSpec": {
"id": "bc7b00d6-623a-4dfc-9fdb-f1240aeadaeb",
"version": "1.0"
},
"state": "enabled",
"auth": {
"specName": "Streaming Connection",
"params": {
"sourceId": "ACME Streaming Connection XDM Data",
"inletUrl": "https://dcs.adobedc.net/collection/667b41cf2dbf3509927da1ebf7e93c20afa727cc8d8373e51da18b62e1b985ec",
"authenticationRequired": false,
"inletId": "667b41cf2dbf3509927da1ebf7e93c20afa727cc8d8373e51da18b62e1b985ec",
"dataType": "xdm",
"name": "ACME Streaming Connection XDM Data"
}
},
"version": "\"f50185ed-0000-0200-0000-637e8fad0000\"",
"etag": "\"f50185ed-0000-0200-0000-637e8fad0000\""
}
]
}
소스 연결 만들기 source
원본 연결을 만들려면 기본 연결 ID를 제공하는 동안 /sourceConnections
끝점에 대한 POST 요청을 만듭니다.
API 형식
POST /flowservice/sourceConnections
요청
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/sourceConnections' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-d '{
"name": "ACME Streaming Source Connection for Customer Data",
"description": "A streaming source connection for ACME XDM Customer Data",
"baseConnectionId": "a59d368a-1152-4673-a46e-bd52e8cdb9a9",
"connectionSpec": {
"id": "bc7b00d6-623a-4dfc-9fdb-f1240aeadaeb",
"version": "1.0"
}
}'
응답
성공한 응답은 고유 식별자(id
)를 포함하여 새로 생성된 소스 연결에 대한 세부 정보와 함께 HTTP 상태 201을 반환합니다.
{
"id": "34ece231-294d-416c-ad2a-5a5dfb2bc69f",
"etag": "\"d505125b-0000-0200-0000-637eb7790000\""
}
대상 XDM 스키마 만들기 target-schema
소스 데이터를 플랫폼에서 사용하려면 타겟 스키마를 만들어 필요에 따라 소스 데이터를 구조화해야 합니다. 그런 다음 대상 스키마를 사용하여 소스 데이터가 포함된 Platform 데이터 세트를 만듭니다.
스키마 레지스트리 API에 대한 POST 요청을 수행하여 대상 XDM 스키마를 만들 수 있습니다.
대상 XDM 스키마를 만드는 방법에 대한 자세한 단계는 API를 사용하여 스키마 만들기에 대한 자습서를 참조하십시오.
타겟 데이터 세트 만들기 target-dataset
카탈로그 서비스 API에 대한 POST 요청을 수행하고 페이로드 내에 대상 스키마의 ID를 제공하여 대상 데이터 집합을 만들 수 있습니다.
대상 데이터 집합을 만드는 방법에 대한 자세한 단계는 API를 사용하여 데이터 집합 만들기에 대한 자습서를 참조하십시오.
대상 연결 만들기 target
대상 연결은 수집된 데이터가 들어오는 대상에 대한 연결을 나타냅니다. 대상 연결을 만들려면 대상 데이터 세트 및 대상 XDM 스키마에 대한 ID를 제공하는 동안 /targetConnections
에 POST 요청을 하십시오. 이 단계에서 데이터 레이크 연결 사양 ID도 제공해야 합니다. 이 ID는 c604ff05-7f1a-43c0-8e18-33bf874cb11c
입니다.
API 형식
POST /flowservice/targetConnections
요청
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-d '{
"name": "ACME Streaming Target Connection",
"description": "ACME Streaming Target Connection",
"data": {
"schema": {
"id": "https://ns.adobe.com/{TENANT}/schemas/7f682c29f887512a897791e7161b90a1ae7ed3dd07a177b1",
"version": "application/vnd.adobe.xed-full+json;version=1.0"
}
},
"params": {
"dataSetId": "637eb7fadc8a211b6312b65b"
},
"connectionSpec": {
"id": "c604ff05-7f1a-43c0-8e18-33bf874cb11c",
"version": "1.0"
}
}'
응답
성공한 응답은 고유 식별자(id
)를 포함하여 새로 생성된 대상 연결에 대한 세부 정보와 함께 HTTP 상태 201을 반환합니다.
{
"id": "07f2f6ff-1da5-4704-916a-c615b873cba9",
"etag": "\"340680f7-0000-0200-0000-637eb8730000\""
}
매핑 만들기 mapping
소스 데이터를 타겟 데이터 세트에 수집하려면 먼저 타겟 데이터 세트가 준수하는 타겟 스키마에 매핑해야 합니다.
매핑 세트를 만들려면 대상 XDM 스키마 $id
과(와) 만들려는 매핑 세트의 세부 정보를 제공하는 동안 Data Prep API의 mappingSets
끝점에 POST 요청을 하십시오.
API 형식
POST /mappingSets
요청
curl -X POST \
'https://platform.adobe.io/data/foundation/mappingSets' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Content-Type: application/json' \
-d '{
"version": 0,
"xdmSchema": "https://ns.adobe.com/{TENANT}/schemas/7f682c29f887512a897791e7161b90a1ae7ed3dd07a177b1",
"xdmVersion": "1.0",
"mappings": [
{
"destinationXdmPath": "person.name.firstName",
"sourceAttribute": "firstName",
"identity": false,
"version": 0
},
{
"destinationXdmPath": "person.name.lastName",
"sourceAttribute": "lastName",
"identity": false,
"version": 0
}
]
}'
xdmSchema
$id
.응답
성공한 응답은 고유 식별자(id
)를 포함하여 새로 만든 매핑의 세부 정보를 반환합니다. 이 ID는 데이터 흐름을 만들기 위해 이후 단계에서 필요합니다.
{
"id": "79a623960d3f4969835c9e00dc90c8df",
"version": 0,
"createdDate": 1669249214031,
"modifiedDate": 1669249214031,
"createdBy": "acme@AdobeID",
"modifiedBy": "acme@AdobeID"
}
데이터 흐름 만들기
이제 소스 및 타겟 연결이 만들어지면 데이터 흐름을 만들 수 있습니다. 데이터 흐름은 소스에서 데이터를 예약하고 수집합니다. /flows
끝점에 대한 POST 요청을 수행하여 데이터 흐름을 만들 수 있습니다.
API 형식
POST /flows
요청
다음 요청은 XDM 데이터에 대한 스트리밍 데이터 흐름을 만듭니다.
code language-shell |
---|
|
다음 요청은 원시 데이터에 대한 스트리밍 데이터 흐름을 만듭니다.
변환을 사용하여 데이터 흐름을 만들 때 name
매개 변수를 변경할 수 없습니다. 이 값은 항상 Mapping
(으)로 설정해야 합니다.
code language-shell |
---|
|
name
description
flowSpec.id
c1a19761-d2c7-4702-b9fa-fe91f0613e81
을(를) 사용해야 합니다. 변환하지 않고 데이터 흐름을 만들려면 d8a6f005-7eaf-4153-983e-e8574508b877
을(를) 사용합니다.sourceConnectionIds
targetConnectionIds
transformations.params.mappingId
응답
성공한 응답은 고유 식별자(id
)를 포함하여 새로 만든 데이터 흐름의 세부 정보와 함께 HTTP 상태 201을 반환합니다.
{
"id": "f2ae0194-8bd8-4a40-a4d9-f07bdc3e6ce2",
"etag": "\"dc0459ae-0000-0200-0000-637ebaec0000\""
}
플랫폼에 수집할 게시물 데이터 ingest-data
플로우를 만들었으므로 이제 이전에 만든 스트리밍 엔드포인트로 JSON 메시지를 보낼 수 있습니다.
API 형식
POST /collection/{INLET_URL}
{INLET_URL}
/connections
끝점에 대한 GET 요청을 수행하여 이 URL을 검색할 수 있습니다.{FLOW_ID}
요청
code language-shell |
---|
|
원시 데이터를 전송할 때 흐름 ID를 쿼리 매개 변수 또는 HTTP 헤더의 일부로 지정할 수 있습니다. 다음 예제에서는 흐름 ID를 HTTP 헤더로 지정합니다.
code language-shell |
---|
|
원시 데이터를 전송할 때 흐름 ID를 쿼리 매개 변수 또는 HTTP 헤더로 지정할 수 있습니다. 다음 예제에서는 흐름 ID를 쿼리 매개 변수로 지정합니다.
code language-shell |
---|
|
응답
성공적인 응답은 새로 수집된 정보의 세부 정보와 함께 HTTP 상태 200을 반환합니다.
{
"inletId": "{BASE_CONNECTION_ID}",
"xactionId": "1584479347507:2153:240",
"receivedTimeMs": 1584479347507
}
{BASE_CONNECTION_ID}
xactionId
receivedTimeMs
다음 단계
이 자습서에 따라 스트리밍 HTTP 연결을 만들어 스트리밍 끝점을 사용하여 데이터를 Platform에 수집할 수 있습니다. UI에서 스트리밍 연결을 만드는 방법에 대한 지침은 스트리밍 연결 만들기 자습서를 참조하십시오.
데이터를 플랫폼으로 스트리밍하는 방법에 대해 알아보려면 시계열 데이터 스트리밍에 대한 자습서 또는 레코드 데이터 스트리밍에 대한 자습서를 참조하십시오.
부록
이 섹션에서는 API를 사용하여 스트리밍 연결을 만드는 방법에 대한 보충 정보를 제공합니다.
인증된 스트리밍 연결에 메시지 보내기
스트리밍 연결에 인증을 사용하도록 설정한 경우 클라이언트가 요청에 Authorization
헤더를 추가해야 합니다.
Authorization
헤더가 없거나 유효하지 않거나 만료된 액세스 토큰이 전송된 경우 HTTP 401 Unauthorized 응답이 반환되고 다음과 유사한 응답이 표시됩니다.
응답
{
"type": "https://ns.adobe.com/adobecloud/problem/data-collection-service-authorization",
"status": "401",
"title": "Authorization",
"report": {
"message": "[id] Ims service token is empty"
}
}