서버리스 워크플로 예약
AWS Step Functions 및 Amazon CloudWatch 사용
AWS 계정에서 리소스의 운영 이벤트에 대한 응답을 자동화하면 AWS 클라우드 인프라의 운영 오버헤드를 줄일 수 있습니다. DevOps 엔지니어 또는 IT 관리자가 ETL 작업, 데이터 동기화 또는 보안을 자동화하고자 하는 경우를 예로 들어보겠습니다.
이 문제를 해결하기 위해 시간 기반 일정에서 서버리스 워크플로를 실행할 수 있습니다. Amazon CloudWatch Events는 AWS 리소스에 대한 변경 사항 및 알림을 설명하는, 거의 실시간에 가까운 시스템 이벤트 스트림입니다. 이러한 스트림에서 특정 이벤트를 AWS Step Functions로 라우팅하고 상태 시스템을 호출하여 추가 처리를 수행할 수 있습니다. AWS Step Functions를 사용하면 여러 서비스를 서버리스 워크플로로 조정하여 자동화된 프로세스를 신속하게 빌드 및 업데이트할 수 있습니다.
이 자습서에서는 Step Functions를 사용하여 CloudWatch 이벤트에 대한 응답으로 서버리스 워크플로를 오케스트레이션해보겠습니다. 우선 AWS Step Functions를 사용하여 아주 간단한 상태 시스템을 만듭니다. 그런 다음, Amazon CloudWatch Events를 사용하여 상태 시스템을 1분마다 실행하는 규칙을 설정합니다. 이 자습서에서는 시간 기반 일정에서 워크플로를 호출하지만, 이 경우를 일반화하여 다른 이벤트 생성 AWS 서비스와 통합할 수 있습니다.
이 자습서에서는 AWS Step Functions와 Amazon CloudWatch를 사용합니다. 두 서비스는 AWS 프리 티어에 포함됩니다.
이 자습서를 사용하려면 AWS 계정이 필요합니다.
Step Functions 또는 CloudWatch는 추가 요금 없이 사용할 수 있습니다. 이 자습서에서 생성하는 리소스는 프리 티어에 해당합니다.
1단계. AWS Identity and Access Management(IAM) 역할 생성
AWS Step Functions는 코드를 실행하고 다른 AWS 리소스(예: Amazon S3 버킷에 저장된 데이터)에 액세스할 수 있습니다. 보안을 유지하려면 AWS Identity and Access Management(IAM)를 사용하여 이러한 리소스에 Step Functions 액세스 권한을 부여해야 합니다.
a. 다른 브라우저 창에서 AWS Management Console을 엽니다. 이 단계별 안내서는 계속 열어 놓을 수 있습니다. 이 화면이 로드되면 먼저 사용자 이름 및 암호를 입력하여 시작합니다. 그런 다음 검색 창에 IAM을 입력하고 IAM을 선택하여 서비스 콘솔을 엽니다.
2단계. AWS Step Functions 상태 시스템 생성
이 단계에서는 Pass 상태를 사용하여 간단하고 독립적으로 실행되는 상태 시스템을 생성합니다. Pass 상태는 입력을 출력으로 전달하기만 하며 실질적인 작업은 전혀 수행하지 않습니다.
실제 시나리오에서 서버리스 워크플로는 필요한 어떤 작업이든 수행할 수 있습니다. 여러 가지 Lambda 함수를 조정하여 태스크를 수행하고, 결정을 내리는 등 다양한 작업을 할 수 있습니다. 단, 이 자습서의 목적을 위해 여기에서는 워크플로를 간단하게 유지하고자 합니다.
a. AWS Step Functions 콘솔을 엽니다. Step Functions는 다양한 미리 정의된 상태 시스템을 템플릿으로 제공합니다. 이 자습서에서는 Hello World 템플릿을 사용하여 상태 시스템을 생성해보겠습니다. [상태 시스템 생성] 페이지에서 [템플릿]을 선택하고 [Hello world]를 선택합니다.
c. Step Functions는 상태 시스템의 이름을 자동으로 채웁니다. 그리고 [상태 시스템 정의] 창에 상태 시스템의 Amazon States 언어 설명을 채웁니다. 상태 시스템을 정의하는 방법에 대한 자세한 내용은 상태 시스템 구조를 참조하십시오.
이제 상태 시스템을 간단히 수정해보겠습니다.
행 2와 행 5에서 “HelloWorld”를 “Do Something”으로 바꿉니다.
행 7에서 “Hello World!” with “Work complete!”로 바꿉니다.
그런 다음 시각적 워크플로 옆의 새로 고침 버튼을 클릭하여 상태 시스템 다이어그램에 변경 사항이 반영되도록 합니다.
3단계. Amazon CloudWatch 이벤트 규칙 생성
이제 상태 시스템을 생성했으므로, 일정에 따라 상태 시스템을 실행하는 Amazon CloudWatch Events 규칙을 생성할 수 있습니다. Amazon CloudWatch Events는 Amazon Web Services(AWS) 리소스의 변경 사항을 설명하는 시스템 이벤트의 스트림을 거의 실시간으로 제공합니다. 빠르게 설정할 수 있는 간단한 규칙을 사용하면 이벤트를 매칭하여 하나 이상의 대상 함수 또는 스트림으로 라우팅할 수 있습니다.
4단계. 상태 시스템이 입력 및 출력을 처리하는 방법 사용자 지정
다음 단계로는 상태 시스템이 입력 및 출력을 처리하는 방법을 사용자 지정해보겠습니다. 상태 시스템 간의 정보 흐름이 어떤 방식으로 이루어지는지 이해하고, 이 데이터를 필터링 및 조작하는 방법을 학습하면 AWS Step Functions에서 워크플로를 효과적으로 설계하고 구현하는 데 도움이 됩니다.
b. [상태 시스템 정의] 창에서 상태 시스템의 행 7을 참조합니다. Pass 상태의 결과 필드는 다음 상태로 전달해야 하는 출력을 지정합니다. 상태 시스템에 한 가지 상태만 있으므로, “Work complete!” 메시지가 워크플로의 끝 상태로 전달됩니다.
Step Functions Pass 상태는 입력을 출력으로 전달하기만 한다는 걸 기억하실 겁니다. ResultPath 필드를 사용하여 상태의 출력을 수정할 수 있습니다. 예를 들어 상태 입력을 상태 입력이 생성하는 결과로 바꿀 수 있습니다(예: 태스크 상태의 Lambda 함수에서 나온 출력).
상태의 입력을 해당 결과와 결합하려면 행 7 뒤에 새 행을 추가하고 다음을 입력합니다.
"ResultPath": "$.taskresult",
이렇게 하면 상태 시스템 실행을 호출한 CloudWatch Event의 세부 정보가 Pass 상태의 출력과 결합되며, 이 경우에는 “Work complete!”입니다. 자세한 내용은 Step Functions에서 입력 및 출력 처리를 참조하십시오.
5단계. 워크플로가 정상적으로 작동하는지 확인
이제 CloudWatch Events 규칙을 활성화했으므로, CloudWatch가 상태 시스템 워크플로를 1분 간격으로 실행하는 작업을 트리거합니다. 이 단계에서는 이러한 실행을 관찰하고 Step Functions가 CloudWatch Events의 세부 정보를 캡처하는지 확인합니다.
6단계. 리소스 종료
이 단계에서는 AWS Step Functions 및 AWS CloudWatch 리소스를 종료합니다.
중요: 현재 사용되지 않는 리소스를 종료하면 비용이 절감되므로 권장됩니다. 리소스를 종료하지 않으면 요금이 부과될 수 있습니다.
축하합니다!
서버리스 워크플로를 1분마다 실행하도록 예약했습니다.
AWS Step Functions를 사용하면 반복 태스크의 실행을 검사 및 감사하여 해당 태스크가 일관성 있게 실행되는지 확인할 수 있습니다. AWS Step Functions를 Amazon CloudWatch Events와 결합하여 특정 조건이 충족되면 일일, 주별, 월별 태스크를 자동화하거나 Step Functions 워크플로의 실행을 트리거할 수 있습니다.