이메일을 통한 AWS IAM 사용자 관리
이것은DevOps, Multimodal AI분야의자동화 워크플로우로, 13개의 노드를 포함합니다.주로 Code, AwsIam, Switch, EmailSend, EmailReadImap 등의 노드를 사용하며. 이메일 명령을 통한 AWS IAM 사용자 관리 자동화
- •AWS Access Key와 Secret
{
"id": "CIJpDmGwbF9xSHqc",
"meta": {
"instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
"templateCredsSetupCompleted": true
},
"name": "Manage AWS IAM Users via Email",
"tags": [],
"nodes": [
{
"id": "6a3a0d65-00c8-4760-aef1-778dc216a38b",
"name": "이메일에서 데이터 추출",
"type": "n8n-nodes-base.code",
"position": [
220,
920
],
"parameters": {
"jsCode": "const emailBody = $json[\"textPlain\"] || \"\";\n\n// Helper function to match patterns\nfunction matchFirst(patterns) {\n for (const pattern of patterns) {\n const match = emailBody.match(pattern);\n if (match) return match[1];\n }\n return null;\n}\n\n// Detect user name\nconst userName = matchFirst([\n /user[:\\s*]*([a-zA-Z0-9._-]+)/i,\n /username\\s+([a-zA-Z0-9._-]+)/i\n]);\n\n// Detect group name\nconst groupName = matchFirst([\n /group[:\\s*]*([a-zA-Z0-9._-]+)/i,\n /groupname\\s+([a-zA-Z0-9._-]+)/i\n]);\n\n// Decide task type\nlet task_type = null;\nif (/create user/i.test(emailBody)) task_type = \"create_user\";\nelse if (/delete user/i.test(emailBody)) task_type = \"delete_user\";\nelse if (/add user to group/i.test(emailBody)) task_type = \"add_user_to_group\";\nelse if (/get user$/i.test(emailBody)) task_type = \"get_user\";\nelse if (/get many users/i.test(emailBody)) task_type = \"get_many_users\";\nelse if (/remove user from group/i.test(emailBody)) task_type = \"remove_user_from_group\";\nelse if (/update user/i.test(emailBody)) task_type = \"update_user\";\n\nreturn [\n {\n json: {\n userName,\n groupName,\n task_type\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "aa61fe8f-53f3-4f5f-bdcf-a7c439586215",
"name": "이메일 메시지 작성",
"type": "n8n-nodes-base.code",
"position": [
880,
920
],
"parameters": {
"jsCode": "const taskType = $json.task_type || \"\";\nconst userName = $json.userName || \"\";\nconst groupName = $json.groupName || \"\";\nconst status = $json.status || \"\"; // \"success\" or \"fail\"\nconst errorMsg = $json.error || \"\";\n\n// Create readable task name\nconst taskMap = {\n create_user: \"Create User\",\n delete_user: \"Delete User\",\n add_user_to_group: \"Add User to Group\",\n get_user: \"Get User\",\n get_many_users: \"Get Many Users\",\n remove_user_from_group: \"Remove User from Group\",\n update_user: \"Update User\"\n};\n\nlet message = \"\";\n\nif (status === \"success\") {\n message = `✅ ${taskMap[taskType] || \"Task\"} completed successfully.\\n`;\n if (userName) message += `User: ${userName}\\n`;\n if (groupName) message += `Group: ${groupName}\\n`;\n} else {\n message = `❌ ${taskMap[taskType] || \"Task\"} failed.\\n`;\n if (userName) message += `User: ${userName}\\n`;\n if (groupName) message += `Group: ${groupName}\\n`;\n if (errorMsg) message += `Error: ${errorMsg}\\n`;\n}\n\nreturn {\n json: {\n subject: `${status === \"success\" ? \"Success\" : \"Failure\"} - ${taskMap[taskType] || \"IAM Task\"}`,\n body: message\n }\n};\n"
},
"typeVersion": 2
},
{
"id": "798b73f3-92d4-43ad-9f3b-1221f885c7b1",
"name": "이메일 응답 전송",
"type": "n8n-nodes-base.emailSend",
"position": [
1100,
920
],
"webhookId": "9be96438-96fa-48c1-8cea-75c179322fb3",
"parameters": {
"text": "={{$json[\"message\"]}}",
"options": {
"replyTo": "={{ $('GET Email Request').item.json.from }}"
},
"subject": "={{$json[\"subject\"]}}",
"toEmail": "={{ $('GET Email Request').item.json.from }}",
"fromEmail": "abc@gmail.com",
"emailFormat": "text"
},
"credentials": {
"smtp": {
"id": "G1kyF8cSWTZ4vouN",
"name": "SMTP -test"
}
},
"typeVersion": 2.1
},
{
"id": "f38dc5ba-90e8-41c3-bc73-c2efcbf9ceaf",
"name": "사용자 생성",
"type": "n8n-nodes-base.awsIam",
"position": [
660,
320
],
"parameters": {
"userName": "={{ $json.username }}",
"operation": "create",
"requestOptions": {},
"additionalFields": {}
},
"credentials": {
"aws": {
"id": "KRRqQf7ufs26Mvaq",
"name": "AWS account - test"
}
},
"typeVersion": 1
},
{
"id": "f8f3a743-d919-49ad-ba78-9873dd034e8f",
"name": "사용자 삭제",
"type": "n8n-nodes-base.awsIam",
"position": [
660,
520
],
"parameters": {
"user": {
"__rl": true,
"mode": "userName",
"value": "={{ $json.username }}"
},
"operation": "delete",
"requestOptions": {}
},
"credentials": {
"aws": {
"id": "KRRqQf7ufs26Mvaq",
"name": "AWS account - test"
}
},
"typeVersion": 1
},
{
"id": "be25ba9c-2362-43d4-a670-d98a39515130",
"name": "그룹에 사용자 추가",
"type": "n8n-nodes-base.awsIam",
"position": [
660,
720
],
"parameters": {
"user": {
"__rl": true,
"mode": "userName",
"value": "={{ $json.username }}"
},
"group": {
"__rl": true,
"mode": "groupName",
"value": "={{ $json.groupname }}"
},
"operation": "addToGroup",
"requestOptions": {}
},
"credentials": {
"aws": {
"id": "KRRqQf7ufs26Mvaq",
"name": "AWS account - test"
}
},
"typeVersion": 1
},
{
"id": "2dc04cc3-224f-433b-bada-f04584f57321",
"name": "사용자 조회",
"type": "n8n-nodes-base.awsIam",
"position": [
660,
920
],
"parameters": {
"user": {
"__rl": true,
"mode": "userName",
"value": "={{ $json.username }}"
},
"operation": "get",
"requestOptions": {}
},
"credentials": {
"aws": {
"id": "KRRqQf7ufs26Mvaq",
"name": "AWS account - test"
}
},
"typeVersion": 1
},
{
"id": "198b262e-fe75-454b-9609-b84a824a0880",
"name": "다수 사용자 조회",
"type": "n8n-nodes-base.awsIam",
"position": [
660,
1120
],
"parameters": {
"requestOptions": {},
"additionalFields": {}
},
"credentials": {
"aws": {
"id": "KRRqQf7ufs26Mvaq",
"name": "AWS account - test"
}
},
"typeVersion": 1
},
{
"id": "3bd5fda6-0669-4dd0-a15b-5fb10ee23bd2",
"name": "그룹에서 사용자 제거",
"type": "n8n-nodes-base.awsIam",
"position": [
660,
1320
],
"parameters": {
"user": {
"__rl": true,
"mode": "userName",
"value": "={{ $json.username }}"
},
"group": {
"__rl": true,
"mode": "groupName",
"value": "={{ $json.groupname }}"
},
"operation": "removeFromGroup",
"requestOptions": {}
},
"credentials": {
"aws": {
"id": "KRRqQf7ufs26Mvaq",
"name": "AWS account - test"
}
},
"typeVersion": 1
},
{
"id": "dbc30150-ccb6-492f-b956-e86da72dcf6c",
"name": "사용자 업데이트",
"type": "n8n-nodes-base.awsIam",
"position": [
660,
1520
],
"parameters": {
"user": {
"__rl": true,
"mode": "userName",
"value": "={{ $json.username }}"
},
"userName": "={{ $json.newusername }}",
"operation": "update",
"requestOptions": {},
"additionalFields": {}
},
"credentials": {
"aws": {
"id": "KRRqQf7ufs26Mvaq",
"name": "AWS account - test"
}
},
"typeVersion": 1
},
{
"id": "d0635da5-3ac9-494c-944a-e3352dcaa685",
"name": "이메일 요청 수신",
"type": "n8n-nodes-base.emailReadImap",
"position": [
0,
920
],
"parameters": {
"options": {
"customEmailConfig": "[\"UNSEEN\", [\"SUBJECT\", \"iam\"]]"
}
},
"credentials": {
"imap": {
"id": "zTEGYssr7MSVeCs3",
"name": "IMAP-test"
}
},
"typeVersion": 2
},
{
"id": "53281026-4fc1-40d8-834a-1085e049f011",
"name": "작업 유형 확인",
"type": "n8n-nodes-base.switch",
"position": [
440,
836
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "99e9f0b2-e19b-45c5-a60e-317d772e6291",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "{{ json.task_type}}",
"rightValue": "create_user"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4e72b4c7-eed9-4039-84c7-773a4dee2eb6",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ json.task_type}}",
"rightValue": "delete_user"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "aef1b8b8-9175-4819-9cb8-87209e4b2954",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ json.task_type}}",
"rightValue": "add_user"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a256941b-0882-4ee1-9126-491da78f5fb4",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ json.task_type.}}",
"rightValue": "get_user"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a502de56-2efa-4766-b883-65d8cefaab1a",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ json.task_type}}",
"rightValue": "get_many_user"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "62aae8fd-71f2-4194-af78-b8d42179a2d0",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ json.task_type}}",
"rightValue": "remove_user"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e70fb51d-7d2e-4ed2-bdde-7edd03059033",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ json.task_type}}",
"rightValue": "update_user"
}
]
}
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "32ac6b9c-62b5-4493-9f8d-d0de9fca4211",
"name": "메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
520
],
"parameters": {
"color": 5,
"width": 680,
"height": 340,
"content": "## How It Works\n- **GET Email Request** - Captures incoming email requests.\n- **Extract Data from Email** - Parses email content to extract user management commands.\n- **Check Type of Task** - Validates the type of task (e.g., create, delete, update).\n- **Get User** - Retrieves user details from AWS IAM.\n- **Get Many Users** - Fetches multiple user details if required.\n- **Create User** - Creates a new IAM user.\n- **Delete User** - Deletes an existing IAM user.\n- **Add to Group** - Assigns a user to a group.\n- **Remove from Group** - Removes a user from a group.\n- **Update User** - Updates user details.\n- **Make Message for Email** - Prepares a confirmation email.\n- **Send Email Response** - Sends the confirmation email."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "a67ad521-0006-4818-a40d-8cc3d753bdb9",
"connections": {
"2dc04cc3-224f-433b-bada-f04584f57321": {
"main": [
[
{
"node": "aa61fe8f-53f3-4f5f-bdcf-a7c439586215",
"type": "main",
"index": 0
}
]
]
},
"f38dc5ba-90e8-41c3-bc73-c2efcbf9ceaf": {
"main": [
[
{
"node": "aa61fe8f-53f3-4f5f-bdcf-a7c439586215",
"type": "main",
"index": 0
}
]
]
},
"f8f3a743-d919-49ad-ba78-9873dd034e8f": {
"main": [
[
{
"node": "aa61fe8f-53f3-4f5f-bdcf-a7c439586215",
"type": "main",
"index": 0
}
]
]
},
"dbc30150-ccb6-492f-b956-e86da72dcf6c": {
"main": [
[
{
"node": "aa61fe8f-53f3-4f5f-bdcf-a7c439586215",
"type": "main",
"index": 0
}
]
]
},
"198b262e-fe75-454b-9609-b84a824a0880": {
"main": [
[
{
"node": "aa61fe8f-53f3-4f5f-bdcf-a7c439586215",
"type": "main",
"index": 0
}
]
]
},
"be25ba9c-2362-43d4-a670-d98a39515130": {
"main": [
[
{
"node": "aa61fe8f-53f3-4f5f-bdcf-a7c439586215",
"type": "main",
"index": 0
}
]
]
},
"d0635da5-3ac9-494c-944a-e3352dcaa685": {
"main": [
[
{
"node": "6a3a0d65-00c8-4760-aef1-778dc216a38b",
"type": "main",
"index": 0
}
]
]
},
"53281026-4fc1-40d8-834a-1085e049f011": {
"main": [
[
{
"node": "f38dc5ba-90e8-41c3-bc73-c2efcbf9ceaf",
"type": "main",
"index": 0
}
],
[
{
"node": "f8f3a743-d919-49ad-ba78-9873dd034e8f",
"type": "main",
"index": 0
}
],
[
{
"node": "be25ba9c-2362-43d4-a670-d98a39515130",
"type": "main",
"index": 0
}
],
[
{
"node": "2dc04cc3-224f-433b-bada-f04584f57321",
"type": "main",
"index": 0
}
],
[
{
"node": "198b262e-fe75-454b-9609-b84a824a0880",
"type": "main",
"index": 0
}
],
[
{
"node": "3bd5fda6-0669-4dd0-a15b-5fb10ee23bd2",
"type": "main",
"index": 0
}
],
[
{
"node": "dbc30150-ccb6-492f-b956-e86da72dcf6c",
"type": "main",
"index": 0
}
]
]
},
"aa61fe8f-53f3-4f5f-bdcf-a7c439586215": {
"main": [
[
{
"node": "798b73f3-92d4-43ad-9f3b-1221f885c7b1",
"type": "main",
"index": 0
}
]
]
},
"3bd5fda6-0669-4dd0-a15b-5fb10ee23bd2": {
"main": [
[
{
"node": "aa61fe8f-53f3-4f5f-bdcf-a7c439586215",
"type": "main",
"index": 0
}
]
]
},
"6a3a0d65-00c8-4760-aef1-778dc216a38b": {
"main": [
[
{
"node": "53281026-4fc1-40d8-834a-1085e049f011",
"type": "main",
"index": 0
}
]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 데브옵스, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Oneclick AI Squad
@oneclick-aiThe AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.
이 워크플로우 공유