템플릿이 요구 사항을 충족하지 못할 경우, 처음부터 맞춤형 도면우를 구축하세요. '나만의 빌더 만들기 '를 사용하여 액션 카탈로그 에서 액션을 드래그 앤 드롭하여 프로세스에 맞는 자동화를 만들 수 있습니다.
이 가이드를 사용하는 방법
이 가이드에서는 개념과 완전한 예를 사용하여 플레우스를 만드는 방법을 보여줍니다. 학습 경로를 선택하세요:
- 핵심 개념부터 먼저 배우세요: 핵심 개념 과 패턴을 읽고 기본 원리를 이해한 다음 적용해 보세요.
- 다음 예시를 따라하세요: EC2 자동 크기 조정 기능을 단계별로 구축하는 예제 워크스루 로 이동
- 참고 패턴: 자신만의 패턴을 만들 때 빠른 참조를 위해 패턴 섹션을 활용하세요.
왜 커스텀 플로우를 구축하나요?
자신만의 워크플로우를 구축해 보세요:
- 템플릿이 지원하지 않는 고유한 비즈니스 로직을 구현합니다.
- 표준 템플릿을 넘어 여러 시스템을 통합합니다 .
- 조건 분기를 사용하여 복잡한 결정을 처리하세요
- 승인 및 공지를 위한 팀의 프로세스를 일치시키세요.
핵심 개념
빌드하기 전에 다음 기본 사항을 이해하세요.
개념 | 목적 |
|---|---|
사용자 인증 정보 및 설정에 대한 반응 | |
사전 구축된 통합(AWS, Slack, 데이터베이스, API) | |
단계 간 출력 전달 | |
후속 단계에서 사용할 변수를 초기화하고 값을 할당합니다. | |
조건에 따라 다른 경로를 생성합니다. | |
완료를 위한 프로세스 목록 또는 투표 | |
범위 | 반복 횟수를 정의하는 데 필요한 루프 함수에 대해 |
지정된 기간 동안 또는 조건이 충족될 때까지 플레우 실행을 일시 중지합니다. | |
멈추다 | 플로우 흐름 실행 종료 |
팁
직접 해보면서 배우세요: 각 개념은 예시를 통해 자세히 설명됩니다. 실제 워크플로우에서 입력, 스위치, 루프 및 승인 게이트가 함께 작동하는 것을 볼 수 있습니다.
구문 예시
워크플로우를 구축할 때 다음 패턴을 활용하세요.
무늬 | 통사론 | 사용 시기 |
|---|---|---|
비밀을 되찾으세요 |
| 시크릿 관리자에서 액세스 자격 증명을 가져옵니다. |
참조 흐름 입력 |
| 플로우가 시작될 때 제공되는 설정을 사용하세요. |
이전 단계 출력값을 사용합니다. |
| 흐름 흐름 단계 간 데이터 전달 |
카탈로그에서 드래그하여 액션을 선택하세요. |
| 워크플로우에 사전 구축된 통합 추가 |
변수 생성 |
| 계산된 값 또는 중간 값을 저장합니다. |
상태 확인 |
|
|
항목들을 반복합니다 |
| 완료를 위한 프로세스 목록 또는 투표 |
반복 횟수를 정의합니다. |
| 루프 함수에 대한 필수 형식, 방법 |
실행 일시 중지 |
| 지정된 기간 동안 워크플로우를 일시 중지합니다. |
끝의 흐름 | 플로우 흐름 실행 종료 | 유효성 검사 실패 또는 취소 후 플레우 종료 |
자세한 오류 처리 패턴은 모범 사례를 참조하세요.
중요
데이터 삭제를 포함한 보안 및 개인정보 보호 관련 모범 사례와 제한 사항은 보안 모범 사례를 참조하십시오.
빠른 시작
5단계로 첫 번째 폴리스우를 만들어 보세요.
- one.newrelic.com > All Capabilities > Workflow Automation 로 이동하여 Create Your Own [나만의 자동화 만들기를]선택하세요.
- 매개변수, 자격 증명(비밀 관리자 에서:
${{ :secrets:keyName }}), 설정(지역, 제외) 및 런타임 데이터(계정 ID, 공지 ID)에 대해 정의합니다. - 카탈로그 에서 액션을 드래그하여
${{ .steps.stepName.outputs.field }}구문으로 연결하여 데이터를 전달하세요. - 조건부 분기를 위한 스위치, 목록 처리 또는 폴링을 위한 루프, 사람의 결정을 위한 승인 게이트를 삽입하세요.
- 각 섹션 실행 후 오류를 조기에 발견하기 위해 실행한 다음 시작하거나 예약하세요.
주요 흐름 패턴
대부분의 자동화 시나리오는 네 가지 핵심 패턴으로 처리할 수 있습니다. 각 패턴은 아래 예시 설명 에서 확인할 수 있습니다.
스위치를 사용한 조건 분기
다음과 같은 경우에 스위치를 사용하십시오: 데이터에 따라 결과가 다양함(임계값, 릴레이 확인, API 응답, 사용자 결정)
주요 구문:
- name: hasCompleted type: switch switch: - condition: "${{ .steps.waitForCompletion.outputs.automationExecutionStatus == 'Failed' }}" next: displayError - condition: "${{ .steps.waitForCompletion.outputs.automationExecutionStatus == 'Success' }}" next: displaySuccess next: displayUnexpected # Default path when no condition matches목록 처리를 위한 루프
여러 항목을 처리하거나 작업을 반복할 때 루프를 사용합니다.
반복문의 구조, 매개변수, 변수 및 고급 사용법(break/continue 포함)에 대한 자세한 내용은 반복문의 구조를 참조하십시오.
주요 구문:
# Send progress updates using range loop - name: progressLoop type: loop for: in: "${{ [range(1; 5)] }}" # Loop 5 times steps: - name: wait type: wait seconds: 10 - name: progressMessage type: action action: slack.chat.postMessage version: 1 inputs: channel: "${{ .workflowInputs.channel }}" text: "Resizing in progress..."예시: 크기 조정을 실행합니다
승인 게이트 및 대기
파괴적인 작업을 수행하기 전에 사람의 판단이 필요하거나 규정 준수 승인이 필요한 경우 승인 게이트를 사용하십시오.
주요 구문:
- name: requestApproval type: action action: slack.chat.postMessage version: 1 inputs: channel: "#approvals" text: "Approve? React with :thumbsup: or :thumbsdown:"
- name: getReactions type: action action: slack.chat.getReactions version: 1 inputs: token: "${{ .workflowInputs.slackToken }}" channelID: "${{ .steps.requestApproval.outputs.channelID }}" threadTs: "${{ .steps.requestApproval.outputs.threadTs }}" timeout: 300 # Wait 5 minutes for reaction
- name: checkApproval type: switch switch: - condition: '${{ .steps.getReactions.outputs.reactions | any(.name == "+1") }}' next: handleApproval - condition: '${{ .steps.getReactions.outputs.reactions | any(.name == "-1") }}' next: handleRejection간단한 지연의 경우:
- name: waitBeforeRetry type: wait seconds: 60 # Wait 60 seconds before continuing예시: 팀 승인 요청
단계 간 데이터 전달
데이터 전달을 사용하는 경우: 한 단계의 출력이 다른 단계의 입력이 되는 경우(모든 스텔라우의 기초)
주요 구문:
# Reference previous step outputs awsRegion: "${{ .inputs.region }}" instanceId: "${{ .steps.getAlert.outputs.data.entity.instanceId }}"예시: 모든 흐름 흐름 단계
할당을 사용한 변수 할당
할당 단계 유형을 사용하면 후속 단계에서 사용할 수 있는 변수를 초기화하고 값을 할당할 수 있습니다. 이 단계는 문자열, 정수, 부울, 맵(객체) 및 리스트를 포함한 여러 데이터 유형을 지원합니다.
기본 구조:
- name: <step_name> type: assign inputs: <variable_name>: <value_or_expression>예시:
- name: variableInitialization type: assign inputs: stringVar: "${{ .workflowInputs.initialValue }}" intVar: "${{ .workflowInputs.anotherValue }}" concatenationVar: "${{ .workflowInputs.initialValue }} - concatenated" booleanVar: true mapVar: key1: "value1" key2: "${{ .workflowInputs.initialValue }}" listVar: - "listItem1" - "${{ .workflowInputs.initialValue }}" - "${{ .workflowInputs.anotherValue }}" statusCode: ${{ .steps.runAction.outputs.statusCode }}팁
패턴 예시 전체를 원하시나요? 오류 처리, 재시도 및 복잡한 통합을 포함한 추가 패턴은 해당 예제를 참조하십시오.
예제 연습: 승인을 통해 EC2 크기 자동 조정
이 예제는 Slack을 통해 팀 승인을 받은 후 CPU 사용량이 급증할 때 EC2 인스턴스의 크기를 조정하는 도구를 구축합니다. 이 예제는 데이터 수집, 조건 논리, 외부 통합 및 오류 처리를 보여줍니다.
팁
워크플로우를 처음 사용하시나요? 이 예제에서는 AWS, Slack 및 승인 논리를 사용합니다. 이제 막 시작했다면 먼저 Slack에 보고서 보내기 를 시도해 보세요.
흐름 흐름 개요
상위 수준 흐름:
- 데이터 수집: 뉴렐릭으로부터 공지 및 세부정보 가져오기
- 승인 요청: Slack 메시지 보내기, 팀 응답 대기
- 크기 조정 실행: AWS Systems Manager를 사용하여 EC2 인스턴스 크기 조정
- 확인 및 정리: 결과 확인, 팀에 알림, 임시 리소스 제거
전제 조건
이 폴리스우를 구축하기 전에 다음 사항이 있는지 확인하세요.
- AWS: EC2 및 Systems Manager 권한이 있는 자격 증명
- Slack: 공지를 위한 봇 및 채널
- 뉴렐릭: 공지사항 검토 EC2 CPU
- 비밀 관리자: 구성됨, 비밀 관리자를참조하세요.
단계별 워크플로우 구축
워크플로우의 각 부분을 구성해 보세요. 각 단계에는 구체적인 동작이 포함되어 있으며 순우 패턴을 보여줍니다.
공지 컨텍스트 수집
조치를 취하기 전에 전체적인 맥락을 파악하기 위해 API 및 데이터베이스에 쿼리를 실행하세요.
공지 및 EC2외 정보를 수집하는 세 가지 작업:
팀 대응 처리
데이터 값 또는 사용자 입력에 따라 다른 경로를 생성합니다.
반응에 따라 분기합니다:
unexpectedReaction: 유효한 반응을 설명하고 다시 기다리기 위해 루프백합니다.gotCancelReaction: 취소를 확인하고 완료로 건너뜁니다. 인프라 변경 없음.gotYesReaction: 승인을 확인하고 크기 조정을 진행합니다.팁
승인 게이트 패턴: 위험한 변경 사항을 적용하기 전에 인간의 판단이 필요할 때 이와 같은 스위치를 사용하세요. 이 패턴은 Slack 반응, PagerDuty 확인, 이메일 응답 또는 사용자 정의 웹후크와 함께 작동합니다.
크기 조정을 실행하세요
고유 토큰을 사용하여 중복 작업을 방지하세요. 루프를 사용하여 실행 시간이 긴 작업을 확인하십시오.
AWS Systems Manager(SSM)를 통해 인스턴스 크기를 조정합니다.
createSsmDocument: 인스턴스를 중지하고 유형을 수정하고 다시 시작하는 SSM 자동화 문서를 생성합니다.generateIdempotencyToken: 중복 크기 조정을 방지하기 위해 고유한 UUID를 생성합니다.startResizing: 인스턴스 ID와 새 유형을 사용하여 SSM 문서를 실행합니다.progressLoop(루프): 10초마다 Slack 업데이트를 게시합니다(5회).waitForCompletion: 2분 제한 시간으로 SSM 상태를 폴링합니다.중요
SSM을 선택해야 하는 이유는 무엇일까요? Systems Manager는 오류 처리, 상태 검증, CloudTrail 감사 로그를 제공합니다. 직접 EC2 API 호출보다 낫습니다.
확인 및 정리
결과에 관계없이 임시 리소스를 정리하십시오.
결과를 확인하고 임시 리소스를 제거하세요.
hasCompleted(스위치): SSM 상태(성공/실패/시간 초과)의 분기.displaySuccess: 뉴렐릭에 대한 로그인 성공입니다.sendSuccessMessage: Slack에서 완료를 확인합니다.displayError: 문제 해결, 해결을 위한 오류 세부정보를 기록합니다.displayUnexpected: 비정상적인 상태(수동 취소 등)를 기록합니다.cleanupSsmDocument: 임시 SSM 문서를 삭제합니다.sendSSMCleanMessage: Slack에서 정리를 확인합니다.workflowCompleted: 최종 완료 메시지(성공 또는 취소 시 실행).
완전한 형식, 참조
이 워크플로우에는 자격 증명, 설정 및 런타임 컨텍스트가 입력으로 필요합니다. 민감한 값은 ${{ :secrets:keyName }} 구문을 사용하여 비밀 관리자 에서 가져옵니다.
입력 카테고리:
- 인증: AWS 및 Slack 자격 증명
- 공지 내용: 뉴렐릭의 계정 ID 및 문제 ID
- 설정: 지역,상태, 시간대, Slack 채널
반응, 이름 | 유형 | 기본값 | 설명 |
|---|---|---|---|
| 문자열 |
| AWS 서비스 인증에 사용되는 AWS 액세스 키 ID입니다. |
| 문자열 |
| AWS 비밀 액세스 키. 액세스 키 ID와 쌍을 이룹니다. |
| 문자열 |
| 임시 AWS 자격 증명에 대한 세션 토큰(선택 사항, IAM 역할과 함께 사용). |
| 문자열 |
| Slack에서 메시지를 게시하고 반응을 읽는 데 사용되는 봇 토큰입니다. |
| Int | 필수의 | 귀하의 뉴렐릭 계정 ID입니다. 공지 내용 및 부품 데이터를 조회하는데 사용됩니다. |
| 문자열 | 필수의 | 이 룩플로우를 촉발시킨 뉴렐릭 공지의 이슈 ID입니다. 공지에서 워크플로우 실행 시 자동으로 제공됩니다. |
| 문자열 |
| EC2 인스턴스가 실행되는 AWS 지역(예: |
| 문자열 |
| 크기 조정을 위한 목표 EC2 형태. 귀하의 성능 요구 사항과 예산에 따라 선택하세요. |
| 문자열 |
| 공지 타임스탬프의 시간 단위입니다. 일반적으로 |
| 문자열 |
| Slack 메시지에서 공지 활성화 시간을 표시하는 시간대(예: |
| 문자열 |
| 타임스탬프를 표시하기 위한 날짜/시간 형식 패턴입니다. 다음 SimpleDateFormat 패턴을 사용합니다. |
| 문자열 | 필수의 | 공지가 게시된 Slack 채널 ID(이름 아님)입니다. 자세한 내용은 Slack 채널 세부정보에서 확인하세요. |
다음 단계
이 예제를 완료한 후 다음 자료들을 살펴보세요.

