WiseN

[Re18특집] AWS Step Functions에 관리 서비스들 통합

Dec 13,2018   |   AWS

작성자_김명수

페이스북 공유하기 트위터 공유하기
Blog thumbnail

여기서 다루는 내용


· Intro
· 업데이트 주요 내용
· AWS DynamoDB integration 확인
· Amazon SNS integration 확인
· Amazon SQS integration 확인
· AWS Glue integration 확인
· AWS Batch integration 확인
· Amazon ECS/Fargate integration 확인
· 마무리


 




Intro






이번 Re:Invent 2018 에서 AWS Step Functions의 기능이 업데이트되었습니다.

기존에는 Lambda 위주의 조정 작업이었으나 여러 AWS 서비스들이 연계 되도록 업데이트 되어

Step Functions에서 조정 할 수 있는 범위가 풍부해졌습니다.

이번 포스팅 에서는 간단하게 업데이트 주요 내용과 일부 서비스들의 통합된 부분 확인을 해보겠습니다.

※  AWS Step Functions에 대한 소개 및 간단 사용은 이전 포스팅 참고 부탁드립니다.

 




업데이트 주요 내용






아래의 서비스들에 대한 통합이 추가되었습니다.

  • AWS Dynamo DB

    • DynamoDB 테이블에 신규 아이템을 저장하거나 읽기 가능

    • 관련 API : GetItem, PutItem



  • Amazon SNS

    • SNS 토픽 게시 가능

    • 관련 API : Publish



  • Amazon SQS

    • SQS 큐에 메시지 전송 가능

    • 관련 API : SendMessage



  • AWS Glue

    • Glue 작업 시작 가능

    • 관련 API : StartJobRun



  • AWS Batch

    • 일괄 작업의 시작 및 완료 대기 가능

    • 관련 API : SubmitJob



  • Amazon ECS/Fargate

    • ECS 또는 Fargate 작업 정의에서 작업 시작 가능

    • 관련 API : RunTask



  • Amazon SageMaker

    • 교육/변환 작업 생성 가능

    • 관련 API : CreateTrainingJob, CreateTransformJob




 




Dynamo DB integration 확인






먼저 Dynamo DB 테이블을 생성합니다.



Step Functions 에서 아래 이미지와 같이 DynamoDB의 PutItem, GetItem task를 실행하는 State machine을 하나 생성합니다.

관련 IAM Role 설정은 여기 참고 바랍니다.



 

State machine을 실행 하면 아래 이미지와 같이 정상적으로 동작 완료되고,



 

DynamoDB 테이블에서 PutItem이 호출되어 데이터가 추가된 부분 확인 가능하며,



이어서 Step Functions에서 실행 완료된 GetItem task의 Output에서 위에서 Put된 내용을 정상적으로 가져온 부분 확인 됩니다.



 

 




Amazon SNS integration 확인






먼저 SNS Topic을 하나 생성합니다.



 

Step Functions 에서 아래 이미지와 같이 SNS의 Publish task를 실행하는 State machine을 하나 생성합니다.

관련 IAM Role 설정은 여기 참고 바랍니다.



 

실행 하면 아래 이미지와 같이 SNS publish 후 반환된 값으로 해당 task의 Output으로 MessageId 가 출력된 부분이 확인 됩니다.



 




Amazon SQS integration 확인






먼저 SQS  큐를 하나 생성합니다.

이어 Step Functions 에서 아래 이미지와 같이 SQS의 SendMessage task를 실행하는 State machine을 하나 생성합니다.

관련 IAM Role 설정은 여기 참고 바랍니다.



 

State machine을 실행 하면 아래 이미지와 같이 SQS SendMessage 후 반환된 값으로 해당 task의 Output으로 MessageId 및 보낸 메시지에 대한 MD5 hash 값이 출력된 부분이 확인 됩니다.



 

SQS에서 생성했던  큐에 정상적으로 전송이 된 부분 확인 됩니다.



 

해당 큐의 Message Detail로 전송했던 Message body/arrtibutes 가 확인 됩니다.



 

 




AWS Glue integration 확인






Glue Job을 하나 생성합니다.



 

이어 Step Functions 에서 아래 이미지와 같이 Glue의 startJobRun task를 실행하는 State machine을 하나 생성합니다.

관련 IAM Role 설정은 여기 참고 바랍니다.



 

State machine을 실행 하면 아래 이미지와 같이 Glue Job 실행 후 반환된 값으로 해당 task의 Output으로 Job 실행된 내용 관련하여 출력된 부분 확인 됩니다.

 



 

당연히 Glue에서 StepFunctions에 의해 실행된 Job 이력도 확인 됩니다.



 

 




Amazon Batch integration 확인






이번 확인은 Step Functions의 Sample Projects를 통해 Batch Job 생성 및 실행을 해보도록 하겠습니다.

Sample Projects 중 "Manage a batch job" 을 선택하고, "Deploy resources"를 선택하여 자동으로  CloudFormation 을 통한 배포를 진행합니다.



설치를 완료하면 Batch Job definiiton과 queue가 생성됩니다.



자동 생성된 Step Functions 를 확인해보면 아래와 같습니다.

참고로 Batch 관련 IAM Role 설정은 여기 참고 바랍니다.

 



 

State machine을 실행 하면 아래 이미지와 같이 Batch Job 실행 후 반환된 값으로 해당 task의 Output으로 Job 실행된 내용 관련하여 출력된 부분 확인 됩니다.



 

그리고 AWS Batch 서비스 콘솔에서 관련 Job이 수행된 부분 확인 됩니다.



샘플 프로젝트 관련 자세한 내용은 여기 참고 바랍니다.

 




Amazon ECS/Fargate integration 확인






이번 확인도 Step Functions의 Sample Projects를 통해 container task 생성 및 실행을 해보도록 하겠습니다.

Sample Projects 중 "Manage a container task" 을 선택하고, "Deploy resources"를 선택하여 자동으로  CloudFormation 을 통한 배포를 진행합니다.



 

설치를 완료하면 ECS cluster와 Task definitions 가 생성됩니다.

 



자동 생성된 Step Functions 를 확인해보면 아래와 같습니다.

참고로 ECS/Fargate 관련 IAM Role 설정은 여기 참고 바랍니다.



 

State machine을 실행 하면 아래 이미지와 같이 Fargate task 가 요청이 되는 부분 확인 됩니다.



 

그리고 Fargate task 가 끝나면 Step Functions에 반환된 값으로 해당 task의 Output에 Job 실행된 내용 관련된 부분도 확인 됩니다.



 

샘플 프로젝트 관련 자세한 내용은 여기 참고 바랍니다.

 




마무리






이전에는 Step Functions에서 Lambda를 거쳐서 SNS를 보내거나 SQS에 메시지를 넣는 등 간접적으로 진행해야 했던 작업이

이제는 통합된 서비스들에 직접 연계 가능하게되어 강력해졌습니다.

이상으로 Step Functions 연계 서비스 업데이트 부분을 간단 확인해보았습니다.