AWS

AWS Lambda와 Step functions

cwchoiit 2024. 3. 4. 14:49
728x90
반응형
SMALL
728x90
SMALL

 

Step functions

AWS에서 Step functions이라는 서비스가 있다. 이 서비스는 Step by Step으로 어떤 작업을 수행해나가는 서비스를 말한다. 비즈니스 워크플로우에 맞춰 수행되는 작업이 정해지는 것인데 그것을 람다와 연동해서 사용할 수 있다. 말보다 직접 해보면서 이해하는게 훨씬 더 이해가 수월한듯해서 바로 만들어보자.

 

IAM Role 생성

우선 Step function을 람다와 사용하기 위해선 Role을 새롭게 만들어야 한다. 왜냐하면 Step Functions이 람다 함수에 접근하기 위해 AWS에서 기본으로 제공해주는 역할이 없기 때문이다.

 

역할을 만들기 위해 IAM > Roles > Create role 클릭

 

설정 부분은 다음과 같다.

- Trusted entity type: AWS service

- Use case: Step Functions

 

선택하면 다음과 같이 정책이 미리 선택되어 있다. 확인 후 'Next'

 

다음 화면에서 이름을 적절하게 입력 후 "Create role" 클릭

 

Role을 정상적으로 만들었으면 Roles 리스트에 만든 역할이 잘 보여져야한다.

 

이렇게 Role을 만들었으면 이제 Step Functions에서 사용될 람다 함수를 만들어야한다.

 

Lambda Function 만들기

이름을 Step-1으로 하고 Runtime을 Python3.12로 만들어 볼 예정이다.

 

아래와 같이 간단한 코드를 작성하고 Deploy한다.

 

이제 Step-2 람다 함수를 만든다. 마찬가지로 같은 코드로 작성 후 Deploy한다.

이렇게 간단하게 두개의 람다 함수를 만들고 Step functions을 만들어보자.

 

Step Functions 만들기

AWS Console에 "Step functions"을 검색해서 나오는 서비스를 클릭한다.

 

Step functions을 만들기를 시작하면 다음과 같은 화면이 보이는데 여기서 상단에 "Code" 버튼을 클릭해서 다음과 같은 상태로 만들어주자.

 

"StartAt"은 시작점이 어디인지를 말한다. 아래 States에 여러개의 컴포넌트를 만들면 되는데 컴포넌트들 중 어떤 컴포넌트에서 시작할지를 말한다. 그리고 저 "Code"를 다음과 같이 수정해보자.

 

여기서 "Start"라는 State는 둘 중 하나를 선택하는 형태이다. 그래서 Type은 "Choice"가 된다. 그리고 그 선택지는 "Choices"로 설정해준다. 각 Choice는 Variable 값에 따라 정해진다. 변수로 들어오는 "type"이라는 값이 "first" 또는 "second" 어느것이냐에 따라 다음 State를 결정해준다. 그 State는 Step1, Step2인데 이 녀석들은 만든 람다함수가 된다.

 

Step1, Step2 모두 람다 함수이기 때문에 "Resource"를 지정해주는데 여기서 Resource는 람다 함수의 ARN이 된다.

그리고 이 이후에 끝난다는 것을 알려주기 위해 각 Step1, Step2 모두 "End": true를 입력해준다.

 

이렇게 코드를 작성하면 우측 다이어그램처럼 모양이 나온다.

이렇게 만들고 상단에 "Config" 버튼을 클릭해서 위에서 만든 IAM Role을 적용하자.

 

이 상태에서 우측 상단 'Create' 버튼을 클릭해보자. 그럼 다음과 같이 Step Functions이 만들어진다.

 

여기서 우리가 만든 Step Functions을 테스트해보기 위해 우측 상단 "Start execution" 버튼을 클릭해보자.

그럼 이러한 화면이 노출된다. 여기서 우리가 변수로 받기로 한 "type"을 명시해주면 된다.

 

"Start execution" 버튼을 클릭하면 실행이 된다. 그리고 다음과 같은 화면이 보인다.

 

이 하단에 보면 다이어그램을 통해 어떤 흐름으로 수행됐는지 시각적으로 확인이 가능하다. 

당연히 "type"값을 "first"로 주었기 때문에 Step1이 실행된 모습이다.

 

그럼 만약 "type"이라는 값 말고 "type1" 이라는 키로 잘못 입력하면? 다음과 같은 결과를 얻는다.

 

 

이렇게 Step Functions과 Lambda를 연동해서 사용하는 법을 알아보았다.

728x90
반응형
LIST