티스토리 뷰
요즘 회사에서 많이 사용하고 있는
AWS 서비스중 하나이다
그것은 AWS Step Function
옆에 직원이 이거 좋아보인다고해서
어떤서비스지 하면서 알아보다가 알게된 서비스인데
사용성, 생산성, 직관성
개인적으로 괜찮은 서비스 인거 같아서
입문편으로 정리 해볼까해요!!!
뭐 AWS 서비스 설명엔 이렇다고 합니다.
쉽게 설명하면 AWS 다양한 서비스를 역어서
쉽게 파이프라인을 구축하고 서비스 생성을 할수있는
서비스라고 보면될꺼 같아요
오늘 필자는 AWS Step Function을 이용하여
AWS Lambda 서비스를 Step 별로 실행할수 있는
간단한 파이프라인을 구축해보겠습니다.
우선 AWS 계정이 필수적으로 필요하니
계정이 있다는 기준으로 글을 써볼께요
AWS Console에 로그인을 합니다.
그러면 여기서 검색창에 Step Function 검색해서
서비스 들어가기
들어가면 이제 이런화면이 나올꺼에요
여기서 상태 머신 생성 클릭
여기서 바로 다음 버튼 클릭
(필자는 시각적으로 워크플로 설계로 만들었어요)
2단계로 워크플로 설계를 할수있는 기본 화면이 나옵니다
여기서 장점은 AWS 다양한 서비스를 드레그엔 드랍으로
쉽게 만들수 있다는거죠
저희는 Lmabda 서비스를 활용 할꺼니까
먼저 람다가 필요하겠죠??
새로운 브라우져를 뛰워서 Lmabda를 만들어보독 하겠습니다.
기본 람다로 생성하고
언어는 Python 3.8
함수 이름은 : test_step_function_001
그리고 '함수생성'
생성하면 이런 화면이 나옵니다.
람다 코드는 저기 lambda_function에다가 작성을 하면됩니다.
저희는 Step별로 동작할수 있는 람다를 만들기 위해
여러 함수를 만들어 보도록할께요.
* 참고 여러개 람다를 만들어서 Step Function으로 만들수도 있으니 참고 하시면 좋습니다.
import json
def step_001(result_val):
print("This is Step 1")
result_val = result_val + 10
return result_val
def step_002(result_val):
print("This is Step 2")
result_val = result_val + 20
return result_val
def step_003(result_val):
print("This is Step 3")
result_val = result_val + 30
return result_val
def lambda_handler(event, context):
# TODO implement
print(event)
state = event['state']
result_val = event['result_val']
if state == 'step_001':
event['state'] = 'step_002'
event['result_val'] = step_001(result_val)
return event
elif state == 'step_002':
event['state'] = 'step_003'
event['result_val'] = step_002(result_val)
return event
elif state == 'step_003':
event['state'] = 'end'
event['result_val'] = step_003(result_val)
return event
return "[Error] No state Find"
코드는 다음과 같이 람다 함수에 복퉅해서 실습해볼께요.
자 그럼 여기까지 하셨으면 다시 아까 Step Function 으로 넘어가서
Lambda fucntion을 Step 별로 호출하는 파이프라인을
만들어보도록 하겠습니다.
이런식으로
Lambda Invoke 함수를 매칭하여
각각 다른 변수들을 콜하도록 만들어볼께요
Step Function 의 Lmabda 블록을 클릭하면
오른쪽에 API 파라미터로 원하는 Lambda 서비스를 매칭 할수 있습니다.
이렇게
아까 만든 람다와 전부 연결해 줍니다.
(저희는 람다 하나에서 Step으로 구분 지었으니 3개모두 동일하게 해야겠죠?)
매칭해주고 저는 각 블럭별 이름을 새로 지정하였습니다.
작성 완료 다음을 누르면
다음과 같은 화면으로 넘어갑니다.
잘 생성되었는지 확인하고
다시 다음 버튼 클릭!!!
그러면 생성할 Step Function의 상태 머신 이름을 지정하라고 나옵니다.
저는 : Test_Lmabda_Step_Resul_Val
라는 상태 머신으로 생성 해보도록할께요
정상적으로 생성이 완료되면
다음과 같은 화면이 나옵니다
자여기서 이제 상태 머신이 Step별로 잘 돌아가는지 Test 하기위해
위에 '실행시작' 버튼을 클릭합니다.
{
"state": "step_001",
"result_val": 10
}
다음과 같이 값을 입력하고.
'실행 시작'
실행을 하면 다음과 같은 권한 에러문제로
에러가 납니다.
자그럼 다음으로 해당 상태머신이 Lambda에 접근이 가능하게
IAM 정책을 추가해볼께요
여기서 권한 추가
+
정책 연결
실습 기준에 빨르게 하기 위해
Lmabda 전체 권한을 부여하겠습니다.
권한 부여하고 아까와 같이 다시 실행 하면
정상적으로 호출된 모습이 보입니다.
출력된 결과를 보면
Lambda에 Step별로 보낸 값을 개속 증가하여 보낸것을 확인이 가능하죠
물론 Lmabda하나에서 다짜면 되지 않냐라는 의문이 들수 있지만
코드가 복잡해지고
다양한 AWS 서비스를 역어서 만들때
Step Function은 활용도 좋을꺼 같다는 생각이 듭니다.
무엇보다 시각적으로 표현해주는게 너무 맘에 듬!!!!
오늘 실습은 여기까지고
궁금하거나
원하는 실습 요청이 있으시면 비밀글로 남겨주시면
시간 될때 남겨드릴께요 :)
'Dev Story > AWS' 카테고리의 다른 글
AWS EC2 및 CloudWatch 모니터링 지표: 안정적인 클라우드 인프라 운영을 위한 필수 도구 (0) | 2023.04.28 |
---|---|
AWS CDK Lambda & Athena (0) | 2023.04.16 |
쉽고 빠르게 AWS Lambda로 파일 압축 및 해제하기: tar 압축과 arcname 옵션 활용! (0) | 2023.04.14 |
Getting Started with AWS Autogluon: A Step-by-Step Guide (0) | 2023.03.15 |
AWS CodeWhisperer를 활용한 코드 작성 (0) | 2023.03.04 |
- Total
- Today
- Yesterday
- GPT
- svelte 따라해보기
- AI
- 티스토리
- EC2
- 따라해보기
- MongoDB
- docker
- ubuntu
- ChartGPT
- 클라우드
- nestjs
- DevOps
- Redis
- 딥러닝
- 실습
- ML
- 개발이야기
- AWS
- typescript
- 따라하기
- cloudcomputing
- frontend
- svelte
- Docker 관리
- lambda
- Containerization
- 한식
- python
- 쉽게따라하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |