Embed에서 워크플로 관리
Embed를 사용하려면 embed 라이선스가 필요합니다. 임베디드 n8n 배포를 팀이나 조직 전반에 걸쳐 관리할 때, 여러 사용자에게 동일한(또는 유사한) 워크플로를 실행해야 하는 경우가 많습니다. 이 문서에서 참조하는 API는 언제든지 변경될 수 있습니다.
Embed를 사용하려면 embed 라이선스가 필요합니다. Embed 사용 시기, 비용 및 라이선스 절차에 대한 자세한 내용은 n8n 웹사이트의 Embed를 참조하세요.
임베디드 n8n 배포를 팀이나 조직 전반에 걸쳐 관리할 때, 여러 사용자에게 동일한(또는 유사한) 워크플로를 실행해야 하는 경우가 많습니다. 이를 위해 두 가지 옵션을 사용할 수 있습니다:
| 솔루션 | 장점 | 단점 |
|---|---|---|
| 각 사용자별 워크플로 생성 | 워크플로 시작 방식에 제한 없음 (모든 트리거 사용 가능) | 여러 워크플로를 관리해야 함. |
| 단일 워크플로 생성 후 실행 시 사용자 자격증명 전달 | 간소화된 워크플로 관리 (하나의 워크플로만 변경하면 됨). | 워크플로를 실행하려면 제품에서 호출해야 함 |
이 문서에서 참조하는 API는 언제든지 변경될 수 있습니다. 버전 업그레이드 시마다 기능이 계속 작동하는지 반드시 확인하세요.
사용자별 워크플로#
따라야 할 세 가지 일반 단계가 있습니다:
- 각 사용자의 자격증명과 워크플로에 필요한 추가 파라미터를 수집합니다.
- 이 사용자를 위한 n8n 자격증명을 생성합니다.
- 워크플로를 생성합니다.
1. 사용자 자격증명 수집#
여기서 이 사용자가 인증해야 하는 모든 노드/서비스에 대한 자격증명과 특정 워크플로에 필요한 추가 파라미터를 캡처해야 합니다. 필요한 자격증명 및 파라미터는 워크플로와 수행하려는 작업에 따라 달라집니다.
2. 사용자 자격증명 생성#
모든 관련 자격증명 세부 정보를 수집한 후, n8n에서 관련 서비스 자격증명을 생성할 수 있습니다. 이는 Editor UI 또는 API 호출을 통해 수행할 수 있습니다.
Editor UI 사용#
- 메뉴에서 Credentials > New를 선택합니다.
- 드롭다운을 사용하여 생성할 Credential type을 선택합니다. 예: Airtable.

- Create New Credentials 모달에서 사용자의 자격증명 세부 정보를 입력하고 이 자격증명에 접근할 수 있는 노드를 선택합니다.

- Create를 클릭하여 완료 및 저장합니다.
API 사용#
Editor UI가 사용하는 프론트엔드 API를 호출하여 동일한 결과를 얻을 수도 있습니다. API 엔드포인트 형식은 https://<n8n-domain>/rest/credentials입니다.
예를 들어, 위의 Editor UI 예시에서 자격증명을 생성하려면 요청은 다음과 같습니다:
POST https://<n8n-domain>/rest/credentials
요청 본문:
{
"name":"MyAirtable",
"type":"airtableApi",
"nodesAccess":[
{
"nodeType":"n8n-nodes-base.airtable"
}
],
"data":{
"apiKey":"q12we34r5t67yu"
}
}
응답에는 새 자격증명의 ID가 포함되며, 이 사용자를 위한 워크플로를 생성할 때 사용합니다:
{
"data":{
"name":"MyAirtable",
"type":"airtableApi",
"data":{
"apiKey":"q12we34r5t67yu"
},
"nodesAccess":[
{
"nodeType":"n8n-nodes-base.airtable",
"date":"2021-09-10T07:41:27.770Z"
}
],
"id":"29",
"createdAt":"2021-09-10T07:41:27.777Z",
"updatedAt":"2021-09-10T07:41:27.777Z"
}
}
3. 워크플로 생성#
모범 사례는 "기본" 워크플로를 갖추고, 새 사용자마다 복제 후 해당 사용자의 자격증명(및 기타 세부 정보)으로 커스터마이징하는 것입니다.
Editor UI 또는 API 호출을 사용하여 템플릿 워크플로를 복제하고 커스터마이징할 수 있습니다.
Editor UI 사용#
-
메뉴에서 Workflows > Open을 선택하여 복제할 템플릿 워크플로를 엽니다.
-
Workflows > Duplicate를 선택한 다음 새 워크플로 이름을 입력하고 Save를 클릭합니다.

-
모든 관련 노드를 업데이트하여 이 사용자의 자격증명(위에서 생성한)을 사용하도록 합니다.
-
이 워크플로를 Save하고 오른쪽 상단 모서리의 토글을 사용하여 Active로 설정합니다.
API 사용#
- 다음 엔드포인트를 사용하여 템플릿 워크플로의 JSON을 가져옵니다:
https://<n8n-domain>/rest/workflows/<workflow_id>
GET https://<n8n-domain>/rest/workflows/1012
응답에는 선택한 워크플로의 JSON 데이터가 포함됩니다:
{
"data": {
"id": "1012",
"name": "Nathan's Workflow",
"active": false,
"nodes": [
{
"parameters": {},
"name": "Start",
"type": "n8n-nodes-base.start",
"typeVersion": 1,
"position": [
130,
640
]
},
{
"parameters": {
"authentication": "headerAuth",
"url": "https://internal.users.n8n.cloud/webhook/custom-erp",
"options": {
"splitIntoItems": true
},
"headerParametersUi": {
"parameter": [
{
"name": "unique_id",
"value": "recLhLYQbzNSFtHNq"
}
]
}
},
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"position": [
430,
300
],
"credentials": {
"httpHeaderAuth": "beginner_course"
}
},
{
"parameters": {
"operation": "append",
"application": "appKBGQfbm6NfW6bv",
"table": "processingOrders",
"options": {}
},
"name": "Airtable",
"type": "n8n-nodes-base.airtable",
"typeVersion": 1,
"position": [
990,
210
],
"credentials": {
"airtableApi": "Airtable"
}
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json[\"orderStatus\"]}}",
"value2": "processing"
}
]
}
},
"name": "IF",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
630,
300
]
},
{
"parameters": {
"keepOnlySet": true,
"values": {
"number": [
{
"name": "=orderId",
"value": "={{$json[\"orderID\"]}}"
}
],
"string": [
{
"name": "employeeName",
"value": "={{$json[\"employeeName\"]}}"
}
]
},
"options": {}
},
"name": "Set",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
800,
210
]
},
{
"parameters": {
"functionCode": "let totalBooked = items.length;\nlet bookedSum = 0;\n\nfor(let i=0; i < items.length; i++) {\n bookedSum = bookedSum + items[i].json.orderPrice;\n}\nreturn [{json:{totalBooked, bookedSum}}]\n"
},
"name": "Function",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [
800,
400
]
},
{
"parameters": {
"webhookUri": "https://discord.com/api/webhooks/865213348202151968/oD5_WPDQwtr22Vjd_82QP3-_4b_lGhAeM7RynQ8Js5DzyXrQEnj0zeAQIA6fki1JLtXE",
"text": "=This week we have {{$json[\"totalBooked\"]}} booked orders with a total value of {{$json[\"bookedSum\"]}}. My Unique ID: {{ $(\"HTTP Request\").params.headerParameters.parameters[0].value }}"
},
"name": "Discord",
"type": "n8n-nodes-base.discord",
"typeVersion": 1,
"position": [
1000,
400
]
},
{
"parameters": {
"triggerTimes": {
"item": [
{
"mode": "everyWeek",
"hour": 9
}
]
}
},
"name": "Cron",
"type": "n8n-nodes-base.cron",
"typeVersion": 1,
"position": [
220,
300
]
}
],
"connections": {
"HTTP Request": {
"main": [
[
{
"node": "IF",
"type": "main",
"index": 0
}
]
]
},
"Start": {
"main": [
[]
]
},
"IF": {
"main": [
[
{
"node": "Set",
"type": "main",
"index": 0
}
],
[
{
"node": "Function",
"type": "main",
"index": 0
}
]
]
},
"Set": {
"main": [
[
{
"node": "Airtable",
"type": "main",
"index": 0
}
]
]
},
"Function": {
"main": [
[
{
"node": "Discord",
"type": "main",
"index": 0
}
]
]
},
"Cron": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
}
},
"createdAt": "2021-07-16T11:15:46.066Z",
"updatedAt": "2021-07-16T12:05:44.045Z",
"settings": {},
"staticData": null,
"tags": []
}
}
-
반환된 JSON 데이터를 저장하고 새 사용자를 위한 관련 자격증명 및 필드를 업데이트합니다.
-
업데이트된 JSON을 요청 본문으로 사용하여 엔드포인트
https://<n8n-domain>/rest/workflows에서 새 워크플로를 생성합니다:
POST https://<n8n-domain>/rest/workflows/
응답에는 새 워크플로의 ID가 포함되며, 다음 단계에서 사용합니다.
- 마지막으로 새 워크플로를 게시합니다:
PATCH https://<n8n-domain>/rest/workflows/1012
JSON 페이로드에 active 값을 추가하여 전달합니다:
// ...
"active":true,
"settings": {},
"staticData": null,
"tags": []
단일 워크플로#
이 방법을 구현하려면 네 가지 단계를 따라야 합니다:
- 각 사용자의 자격증명과 워크플로에 필요한 추가 파라미터를 수집합니다. 위의 사용자 자격증명 수집을 참조하세요.
- 이 사용자를 위한 n8n 자격증명을 생성합니다. 위의 사용자 자격증명 생성을 참조하세요.
- 워크플로를 생성합니다.
- 필요에 따라 워크플로를 호출합니다.
워크플로 생성#
이 워크플로의 세부 사항과 범위는 개별 사용 사례에 따라 크게 달라지지만, 염두에 두어야 할 몇 가지 설계 구현 사항이 있습니다:
- 이 워크플로는 Webhook 노드에 의해 트리거되어야 합니다.
- 들어오는 웹훅 호출에는 사용자의 자격증명 및 필요한 기타 워크플로 파라미터가 포함되어야 합니다.
- 사용자의 자격증명이 필요한 각 노드는 표현식을 사용하여 웹훅 호출에서 제공된 자격증명을 읽도록 해야 합니다.
- 워크플로를 저장하고 게시하되, Webhook 노드에서 프로덕션 URL이 선택되어 있는지 확인합니다. 자세한 내용은 webhook 노드를 참조하세요.
워크플로 호출#
각 새 사용자 또는 필요에 따라 기존 사용자에 대해, 워크플로 트리거로 정의된 웹훅을 호출하고 필요한 자격증명(및 기타 워크플로 파라미터)을 제공합니다.
