SlideShare a Scribd company logo
AWS Step Functions 実践
AWS Premeir Night #3
クラスメソッド株式会社
菊池 修治
• 菊池 修治(きくち しゅうじ)
– クラスメソッド AWS事業
– Solutions Architect
– AWS Certified in All 5!
– SIer à 製造業 à クラスメソッド
– 好きなAWSサービス
• VPC、S3、Step Functions
⾃⼰紹介
Agenda
• AWS Step Functions とは
• Amazon State Language
• Step Functions の実⾏
– State Machine の実⾏⽅法
– Activity Task の実⾏
Agenda
• AWS Step Functions とは
• Amazon State Language
• Step Functions の実⾏
– State Machine の実⾏⽅法
– Activity Task の実⾏
AWS Step Functions
re:Invent 2016 にて発表!
AWS Step Functions
• 「Step Functionsやってみた」ブログ公開中
– http://dev.classmethod.jp/referencecat/aws-step-functions/
AWS Step Functions
• 分散されたアプリケーションをビジュアルに
コーディネート
– Lambdaなどの複数アプリケーションを⼀連の
ワークフローとして定義・実⾏
– 処理の流れ・ステップをビジュアル化
AWS Step Functions
AWS Step Functions
• ユースケース
– シーケンシャルなアプリケーションの実⾏
– タスクの並列化
– 処理の条件分岐
– エラーハンドリング
– ⻑時間の実⾏
AWS Step Functions
• 利点
– アプリケーション間を疎結合に
– 汎⽤性・再利⽤性の向上
– 実⾏結果の管理
AWS Step Functions
• コンポーネント
– State Machine:定義された⼀連のフロー
– State Language:State Machineを定義する⾔語
Agenda
• AWS Step Functions とは
• Amazon State Language
• Step Functions の実⾏
– State Machine の実⾏⽅法
– Activity Task の実⾏
Amazon State Language
• JSONで記述
{
"Comment": "A Retry example of the Amazon States Language using an AWS Lambda Function",
"StartAt": "HelloWorld",
"States": {
"HelloWorld": {
"Type": "Task",
"Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
"Retry": [
{
"ErrorEquals": ["HandledError"],
"IntervalSeconds": 1,
"MaxAttempts": 2,
"BackoffRate": 2.0
},
{
"ErrorEquals": ["States.TaskFailed"],
"IntervalSeconds": 30,
"MaxAttempts": 2,
"BackoffRate": 2.0
},
{
"ErrorEquals": ["States.ALL"],
"IntervalSeconds": 5,
"MaxAttempts": 5,
"BackoffRate": 2.0
}
],
"End": true
}
}
}
Amazon State Language
• State (= Step)をつなげてフロー(State Machine)
を作成
• ⼀度作成したState Machineは変更・修正できない
Amazon State Language
• 7つの State
– Task :アプリケーションの実⾏
– Choice :分岐条件
– Parallel :Taskの並列実⾏
– Wait :待ち
– Fail :異常終了
– Succeed :正常終了
– Pass :なにもしない
Amazon State Language
• 7つの State
– Task :アプリケーションの実⾏
– Choice :分岐条件
– Parallel :Taskの並列実⾏
– Wait :待ち
– Fail :異常終了
– Succeed :正常終了
– Pass :なにもしない
Amazon State Language
• Task
"TaskState": {
"Comment": "Task State example",
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunctio
"Next": "NextState",
"TimeoutSeconds": 300,
"Retry": [
{
"ErrorEquals": [ "ErrorA", "ErrorB" ],
"IntervalSeconds": 1,
"BackoffRate": 2,
"MaxAttempts": 2
}
]
}
Amazon State Language
• Task
"TaskState": {
"Comment": "Task State example",
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunctio
"Next": "NextState",
"TimeoutSeconds": 300,
"Retry": [
{
"ErrorEquals": [ "ErrorA", "ErrorB" ],
"IntervalSeconds": 1,
"BackoffRate": 2,
"MaxAttempts": 2
}
]
}
Amazon State Language
• Task
"TaskState": {
"Comment": "Task State example",
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunctio
"Next": "NextState",
"TimeoutSeconds": 300,
"Retry": [
{
"ErrorEquals": [ "ErrorA", "ErrorB" ],
"IntervalSeconds": 1,
"BackoffRate": 2,
"MaxAttempts": 2
}
]
}
Amazon State Language
• Task
"TaskState": {
"Comment": "Task State example",
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunctio
"Next": "NextState",
"TimeoutSeconds": 300,
"Retry": [
{
"ErrorEquals": [ "ErrorA", "ErrorB" ],
"IntervalSeconds": 1,
"BackoffRate": 2,
"MaxAttempts": 2
}
]
}
Amazon State Language
• Choice
"ChoiceState": {
"Type" : "Choice",
"Choices": [
{
"Variable": "$.foo",
"NumericEquals": 1,
"Next": "FirstMatchState"
},
{
"Variable": "$.foo",
"NumericEquals": 2,
"Next": "SecondMatchState”
}
],
"Default": "DefaultState"
},
• StringEquals
• StringLessThan
• StringGreaterThan
• StringLessThanEquals
• StringGreaterThanEquals
• NumericEquals
• NumericLessThan
• NumericGreaterThan
• NumericLessThanEquals
• NumericGreaterThanEquals
• BooleanEquals
• TimestampEquals
• TimestampLessThan
• TimestampGreaterThan
• TimestampLessThanEquals
• TimestampGreaterThanEquals
Amazon State Language
• Choice "ChoiceStateX": {
"Type" : "Choice",
"Choices": [
{
"Not": {
"Variable": "$.type",
"StringEquals": "Private”
},
"Next": "Public”
},
{
"And": [
{
"Variable": "$.value",
"NumericGreaterThanEquals": 20
},
{
"Variable": "$.value",
"NumericLessThan": 30
}
],
"Next": "ValueInTwenties”
}
],
"Default": "DefaultState”
},
• Not
• Or
• And
Amazon State Language
• Choice "ChoiceStateX": {
"Type" : "Choice",
"Choices": [
{
"Not": {
"Variable": "$.type",
"StringEquals": "Private”
},
"Next": "Public”
},
{
"And": [
{
"Variable": "$.value",
"NumericGreaterThanEquals": 20
},
{
"Variable": "$.value",
"NumericLessThan": 30
}
],
"Next": "ValueInTwenties”
}
],
"Default": "DefaultState”
},
• Not
• Or
• And
Amazon State Language
• Choice "ChoiceStateX": {
"Type" : "Choice",
"Choices": [
{
"Not": {
"Variable": "$.type",
"StringEquals": "Private”
},
"Next": "Public”
},
{
"And": [
{
"Variable": "$.value",
"NumericGreaterThanEquals": 20
},
{
"Variable": "$.value",
"NumericLessThan": 30
}
],
"Next": "ValueInTwenties”
}
],
"Default": "DefaultState”
},
• Not
• Or
• And
Amazon State Language
• Parallel
– 全ての分岐が完了
してから次のState
へ進む
"Parallel": {
"Type": "Parallel",
"Next": "Final State",
"Branches": [
{
"StartAt": "Wait 20s",
"States": {
"Wait 20s": {
"Type": "Wait",
"Seconds": 20,
"End": true
}
}
},
{
"StartAt": "Wait 10s",
"States": {
"Wait 10s": {
"Type": "Wait",
"Seconds": 10,
"End": true
}
}
}
]
},
Amazon State Language
• Wait
– Seconds
– SecondsPath
– Timestamp
– TimestampPath
"wait_ten_seconds" : {
"Type" : "Wait",
"Seconds" : 10,
"Next": "NextState”
}
"wait_until" : {
"Type": "Wait",
"Timestamp": "2016-03-14T01:59:00Z",
"Next": "NextState”
}
"wait_until" : {
"Type": "Wait",
"TimestampPath": "$.expirydate",
"Next": "NextState”
}
Agenda
• AWS Step Functions とは
• Amazon State Language
• Step Functions の実⾏
– State Machine の実⾏⽅法
– Activity Task の実⾏
State Machine の実⾏
• start-execution API
Step Functions
State Machine
start-execution
State Machine の実⾏
• start-execution API
Lambda Step Functions
State Machine
start-execution
State Machine の実⾏
• start-execution API
API
Gateway
S3
SNS
Cloud Watch
Event
Lambda Step Functions
State Machine
start-execution
State Machine の実⾏
• 実⾏結果
– State Machine ごとに管理
State Machine の実⾏
• 実⾏結果
– State Machine の実⾏毎に管理
State Machine の実⾏
• 実⾏結果
– State 毎に管理
Agenda
• AWS Step Functions とは
• Amazon State Language
• Step Functions の実⾏
– State Machine の実⾏⽅法
– Activity Task の実⾏
Activity Taskの実⾏
• Lambda以外のアプリケーションの実⾏
–EC2
–オンプレミス
• Pull型の実⾏
– アプリケーションからポーリング
– LambdaはPush型
Activity Taskの実⾏
• Activityの作成
Activity Taskの実⾏
• Activityの作成
設定項⽬は名前だけ
ARNが作成される
Activity Taskの実⾏
• State Machineの作成
{
"Comment": "An example using a Task state.",
"StartAt": "getGreeting",
"Version": "1.0",
"TimeoutSeconds": 300,
"States":
{
"getGreeting": {
"Type": "Task",
"Resource": "arn:aws:states:eu_central-1:123456789012:activity:get-greeting",
"End": true
}
}
}
Activity Taskの実⾏
• アプリケーションからポーリング
– Get-Activity-Task API
Polling
Get-Activity-Task
--Activity ARN
--Worker Name (Option)
Worker
State Machine
Activity Taskの実⾏
• State Machine実⾏
Input
TaskToken
In progress
Get-Activity-Task
--Activity ARN
--Worker Name (Option)
Worker
State Machine
Activity Taskの実⾏
• 実⾏完了
Success
Send-Task-Success
--Task-Token
--Output
Worker
State Machine
Activity Taskの実⾏
• 分散アプリケーション
Workers
State Machines
まとめ
• Step Functionsを使うことで分散アプリケーション
による複雑な処理を簡単に定義・実⾏・管理
• マイクロサービス化、サーバレス化
• Lambdaだけでなくサーバ上のアプリケーションも
組み込み可能
classmethod.jp44

More Related Content

PDF
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
PDF
AWS Black Belt Techシリーズ Amazon EMR
PPTX
Firebaseを利用するためにGCPとCloud IAMの 基本を理解しよう
PPTX
20211109 bleaの使い方(基本編)
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
PDF
AWS Black Belt Techシリーズ AWS SDK
PDF
Amazon Personalize Event Tracker 실시간 고객 반응을 고려한 추천::김태수, 솔루션즈 아키텍트, AWS::AWS ...
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~
20190911 AWS Black Belt Online Seminar AWS Batch
AWS Black Belt Techシリーズ Amazon EMR
Firebaseを利用するためにGCPとCloud IAMの 基本を理解しよう
20211109 bleaの使い方(基本編)
AWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Techシリーズ AWS SDK
Amazon Personalize Event Tracker 실시간 고객 반응을 고려한 추천::김태수, 솔루션즈 아키텍트, AWS::AWS ...

What's hot (20)

PDF
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
PDF
20191120 AWS Black Belt Online Seminar Amazon Managed Streaming for Apache Ka...
PDF
게임 서비스에 딱 맞는 AWS 신규 서비스들로 게임 아키텍처 개선하기 - 김병수 솔루션즈 아키텍트, AWS :: AWS Summit Seo...
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
PDF
DevOps with Database on AWS
PDF
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
PDF
” AWS ” だけじゃない! ” GCP ” の オートスケール機能
PDF
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
PDF
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
PDF
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
PPTX
Serverless Meetup Tokyo #15 Amazon EventBridge スキーマレジストリ でイベントの扱いを簡単に!
PDF
Usb接続するアプリを開発した時に試行錯誤した事
PDF
Day 1 with Amazon Web Services - AWSご利用開始時に最低限おさえておきたい10のこと
PDF
롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...
PDF
AWS Personalize 중심으로 살펴본 추천 시스템 원리와 구축
PDF
AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用
PDF
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
PDF
VPC Reachability Analyzer 使って人生が変わった話
PDF
AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...
PDF
20200721 AWS Black Belt Online Seminar AWS App Mesh
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20191120 AWS Black Belt Online Seminar Amazon Managed Streaming for Apache Ka...
게임 서비스에 딱 맞는 AWS 신규 서비스들로 게임 아키텍처 개선하기 - 김병수 솔루션즈 아키텍트, AWS :: AWS Summit Seo...
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
DevOps with Database on AWS
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
” AWS ” だけじゃない! ” GCP ” の オートスケール機能
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
Serverless Meetup Tokyo #15 Amazon EventBridge スキーマレジストリ でイベントの扱いを簡単に!
Usb接続するアプリを開発した時に試行錯誤した事
Day 1 with Amazon Web Services - AWSご利用開始時に最低限おさえておきたい10のこと
롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...
AWS Personalize 중심으로 살펴본 추천 시스템 원리와 구축
AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
VPC Reachability Analyzer 使って人生が変わった話
AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...
20200721 AWS Black Belt Online Seminar AWS App Mesh
Ad

Similar to AWS Step Functions 実践 (18)

PDF
Serverless Apps with AWS Step Functions
PDF
AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)
PDF
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
PDF
How to ship customer value faster with step functions
PDF
How to ship customer value faster with step functions
PDF
Development in the could: How do we do it(Cloud computing. Microservices. Faas)
PDF
Decompose the monolith into AWS Step Functions
PDF
Delightful steps to becoming a functioning user of Step Functions
PDF
Media Processing Workflows using AWS Step Functions and Machine Learning on A...
PDF
Do more with less code in serverless
PDF
Amazon Web Services for PHP Developers
PDF
Software as a Service workshop / Unlocked: the Hybrid Cloud 12th May 2014
KEY
Wider than rails
PDF
Aws summit devops 云端多环境自动化运维和部署
PDF
2019 hashiconf consul-templaterb
PDF
20190522 AWS Black Belt Online Seminar AWS Step Functions
PDF
Going serverless
PDF
Presentation kyushu-2018
Serverless Apps with AWS Step Functions
AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
How to ship customer value faster with step functions
How to ship customer value faster with step functions
Development in the could: How do we do it(Cloud computing. Microservices. Faas)
Decompose the monolith into AWS Step Functions
Delightful steps to becoming a functioning user of Step Functions
Media Processing Workflows using AWS Step Functions and Machine Learning on A...
Do more with less code in serverless
Amazon Web Services for PHP Developers
Software as a Service workshop / Unlocked: the Hybrid Cloud 12th May 2014
Wider than rails
Aws summit devops 云端多环境自动化运维和部署
2019 hashiconf consul-templaterb
20190522 AWS Black Belt Online Seminar AWS Step Functions
Going serverless
Presentation kyushu-2018
Ad

More from Shuji Kikuchi (20)

PDF
re:Growth 2021 コンピュートサービスの進化を語る
PDF
re:Grouth 2020 : AWS Infrastrucuter Serviceの進化 2020
PDF
JAWS-UG 横浜 re:Invent re:Cap week1 EC2ストレージパフォーマンスの進化
PDF
AWS Outpostsセミナー オンプレミスネットワークとの接続
PDF
NW-JAWS x Tech-on勉強会:AWS Transit Gateway で広がる ネットワークアーキテクチャ
PDF
[JAWS-UG 横浜] AWS re:Invent 2019 Network関連アップデート 5本立て
PDF
Developers.IO 2019 Tokyo re:inventの歩き方
PDF
Developers.IO 2019 ハイブリッド/マルチVPC環境を構成するためのAWSネットワーク完全理解
PDF
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
PDF
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
PDF
re:Growth 2018 Tokyo:Amazon Global Networkが提供する新サービス
PDF
Developers.IO 2018 Tokyo AWSベストプラクティス
PDF
AKIBA.AWS #10 NLBを取り巻く環境のUPDATE
PDF
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう
PDF
[AKIBA.AWS] VGWのルーティング仕様
PDF
[AKIBA.AWS] VPN接続とルーティングの基礎
PDF
[AKIBA.AWS] VPCをネットワーク図で理解してみる
PDF
[HIGOBASHI.AWS] AWS ネットワーク小ネタ祭り
PDF
[AKIBA.AWS] AWS Elemental MediaConvertから学ぶコーデック入門
PDF
[AKIBA.AWS] re:invent 2017アップデート:ついてこられるか?AWSネットワークの進化
re:Growth 2021 コンピュートサービスの進化を語る
re:Grouth 2020 : AWS Infrastrucuter Serviceの進化 2020
JAWS-UG 横浜 re:Invent re:Cap week1 EC2ストレージパフォーマンスの進化
AWS Outpostsセミナー オンプレミスネットワークとの接続
NW-JAWS x Tech-on勉強会:AWS Transit Gateway で広がる ネットワークアーキテクチャ
[JAWS-UG 横浜] AWS re:Invent 2019 Network関連アップデート 5本立て
Developers.IO 2019 Tokyo re:inventの歩き方
Developers.IO 2019 ハイブリッド/マルチVPC環境を構成するためのAWSネットワーク完全理解
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
re:Growth 2018 Tokyo:Amazon Global Networkが提供する新サービス
Developers.IO 2018 Tokyo AWSベストプラクティス
AKIBA.AWS #10 NLBを取り巻く環境のUPDATE
[AKIBA.AWS] NLBとPrivateLinkの仕様に立ち向かう
[AKIBA.AWS] VGWのルーティング仕様
[AKIBA.AWS] VPN接続とルーティングの基礎
[AKIBA.AWS] VPCをネットワーク図で理解してみる
[HIGOBASHI.AWS] AWS ネットワーク小ネタ祭り
[AKIBA.AWS] AWS Elemental MediaConvertから学ぶコーデック入門
[AKIBA.AWS] re:invent 2017アップデート:ついてこられるか?AWSネットワークの進化

Recently uploaded (20)

PPTX
Power Point - Lesson 3_2.pptx grad school presentation
PPTX
Module 1 - Cyber Law and Ethics 101.pptx
PDF
💰 𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓 💰
PDF
Testing WebRTC applications at scale.pdf
PDF
APNIC Update, presented at PHNOG 2025 by Shane Hermoso
PDF
Paper PDF World Game (s) Great Redesign.pdf
PPTX
introduction about ICD -10 & ICD-11 ppt.pptx
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
PDF
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
PPTX
Digital Literacy And Online Safety on internet
PPTX
innovation process that make everything different.pptx
PPTX
Funds Management Learning Material for Beg
PDF
Tenda Login Guide: Access Your Router in 5 Easy Steps
PDF
WebRTC in SignalWire - troubleshooting media negotiation
PPTX
international classification of diseases ICD-10 review PPT.pptx
PPTX
Introuction about ICD -10 and ICD-11 PPT.pptx
PPTX
Introuction about WHO-FIC in ICD-10.pptx
PDF
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
PDF
The Internet -By the Numbers, Sri Lanka Edition
PDF
Decoding a Decade: 10 Years of Applied CTI Discipline
Power Point - Lesson 3_2.pptx grad school presentation
Module 1 - Cyber Law and Ethics 101.pptx
💰 𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓 💰
Testing WebRTC applications at scale.pdf
APNIC Update, presented at PHNOG 2025 by Shane Hermoso
Paper PDF World Game (s) Great Redesign.pdf
introduction about ICD -10 & ICD-11 ppt.pptx
Design_with_Watersergyerge45hrbgre4top (1).ppt
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
Digital Literacy And Online Safety on internet
innovation process that make everything different.pptx
Funds Management Learning Material for Beg
Tenda Login Guide: Access Your Router in 5 Easy Steps
WebRTC in SignalWire - troubleshooting media negotiation
international classification of diseases ICD-10 review PPT.pptx
Introuction about ICD -10 and ICD-11 PPT.pptx
Introuction about WHO-FIC in ICD-10.pptx
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
The Internet -By the Numbers, Sri Lanka Edition
Decoding a Decade: 10 Years of Applied CTI Discipline

AWS Step Functions 実践

  • 1. AWS Step Functions 実践 AWS Premeir Night #3 クラスメソッド株式会社 菊池 修治
  • 2. • 菊池 修治(きくち しゅうじ) – クラスメソッド AWS事業 – Solutions Architect – AWS Certified in All 5! – SIer à 製造業 à クラスメソッド – 好きなAWSサービス • VPC、S3、Step Functions ⾃⼰紹介
  • 3. Agenda • AWS Step Functions とは • Amazon State Language • Step Functions の実⾏ – State Machine の実⾏⽅法 – Activity Task の実⾏
  • 4. Agenda • AWS Step Functions とは • Amazon State Language • Step Functions の実⾏ – State Machine の実⾏⽅法 – Activity Task の実⾏
  • 5. AWS Step Functions re:Invent 2016 にて発表!
  • 6. AWS Step Functions • 「Step Functionsやってみた」ブログ公開中 – http://dev.classmethod.jp/referencecat/aws-step-functions/
  • 7. AWS Step Functions • 分散されたアプリケーションをビジュアルに コーディネート – Lambdaなどの複数アプリケーションを⼀連の ワークフローとして定義・実⾏ – 処理の流れ・ステップをビジュアル化
  • 9. AWS Step Functions • ユースケース – シーケンシャルなアプリケーションの実⾏ – タスクの並列化 – 処理の条件分岐 – エラーハンドリング – ⻑時間の実⾏
  • 10. AWS Step Functions • 利点 – アプリケーション間を疎結合に – 汎⽤性・再利⽤性の向上 – 実⾏結果の管理
  • 11. AWS Step Functions • コンポーネント – State Machine:定義された⼀連のフロー – State Language:State Machineを定義する⾔語
  • 12. Agenda • AWS Step Functions とは • Amazon State Language • Step Functions の実⾏ – State Machine の実⾏⽅法 – Activity Task の実⾏
  • 13. Amazon State Language • JSONで記述 { "Comment": "A Retry example of the Amazon States Language using an AWS Lambda Function", "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Task", "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME", "Retry": [ { "ErrorEquals": ["HandledError"], "IntervalSeconds": 1, "MaxAttempts": 2, "BackoffRate": 2.0 }, { "ErrorEquals": ["States.TaskFailed"], "IntervalSeconds": 30, "MaxAttempts": 2, "BackoffRate": 2.0 }, { "ErrorEquals": ["States.ALL"], "IntervalSeconds": 5, "MaxAttempts": 5, "BackoffRate": 2.0 } ], "End": true } } }
  • 14. Amazon State Language • State (= Step)をつなげてフロー(State Machine) を作成 • ⼀度作成したState Machineは変更・修正できない
  • 15. Amazon State Language • 7つの State – Task :アプリケーションの実⾏ – Choice :分岐条件 – Parallel :Taskの並列実⾏ – Wait :待ち – Fail :異常終了 – Succeed :正常終了 – Pass :なにもしない
  • 16. Amazon State Language • 7つの State – Task :アプリケーションの実⾏ – Choice :分岐条件 – Parallel :Taskの並列実⾏ – Wait :待ち – Fail :異常終了 – Succeed :正常終了 – Pass :なにもしない
  • 17. Amazon State Language • Task "TaskState": { "Comment": "Task State example", "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunctio "Next": "NextState", "TimeoutSeconds": 300, "Retry": [ { "ErrorEquals": [ "ErrorA", "ErrorB" ], "IntervalSeconds": 1, "BackoffRate": 2, "MaxAttempts": 2 } ] }
  • 18. Amazon State Language • Task "TaskState": { "Comment": "Task State example", "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunctio "Next": "NextState", "TimeoutSeconds": 300, "Retry": [ { "ErrorEquals": [ "ErrorA", "ErrorB" ], "IntervalSeconds": 1, "BackoffRate": 2, "MaxAttempts": 2 } ] }
  • 19. Amazon State Language • Task "TaskState": { "Comment": "Task State example", "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunctio "Next": "NextState", "TimeoutSeconds": 300, "Retry": [ { "ErrorEquals": [ "ErrorA", "ErrorB" ], "IntervalSeconds": 1, "BackoffRate": 2, "MaxAttempts": 2 } ] }
  • 20. Amazon State Language • Task "TaskState": { "Comment": "Task State example", "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunctio "Next": "NextState", "TimeoutSeconds": 300, "Retry": [ { "ErrorEquals": [ "ErrorA", "ErrorB" ], "IntervalSeconds": 1, "BackoffRate": 2, "MaxAttempts": 2 } ] }
  • 21. Amazon State Language • Choice "ChoiceState": { "Type" : "Choice", "Choices": [ { "Variable": "$.foo", "NumericEquals": 1, "Next": "FirstMatchState" }, { "Variable": "$.foo", "NumericEquals": 2, "Next": "SecondMatchState” } ], "Default": "DefaultState" }, • StringEquals • StringLessThan • StringGreaterThan • StringLessThanEquals • StringGreaterThanEquals • NumericEquals • NumericLessThan • NumericGreaterThan • NumericLessThanEquals • NumericGreaterThanEquals • BooleanEquals • TimestampEquals • TimestampLessThan • TimestampGreaterThan • TimestampLessThanEquals • TimestampGreaterThanEquals
  • 22. Amazon State Language • Choice "ChoiceStateX": { "Type" : "Choice", "Choices": [ { "Not": { "Variable": "$.type", "StringEquals": "Private” }, "Next": "Public” }, { "And": [ { "Variable": "$.value", "NumericGreaterThanEquals": 20 }, { "Variable": "$.value", "NumericLessThan": 30 } ], "Next": "ValueInTwenties” } ], "Default": "DefaultState” }, • Not • Or • And
  • 23. Amazon State Language • Choice "ChoiceStateX": { "Type" : "Choice", "Choices": [ { "Not": { "Variable": "$.type", "StringEquals": "Private” }, "Next": "Public” }, { "And": [ { "Variable": "$.value", "NumericGreaterThanEquals": 20 }, { "Variable": "$.value", "NumericLessThan": 30 } ], "Next": "ValueInTwenties” } ], "Default": "DefaultState” }, • Not • Or • And
  • 24. Amazon State Language • Choice "ChoiceStateX": { "Type" : "Choice", "Choices": [ { "Not": { "Variable": "$.type", "StringEquals": "Private” }, "Next": "Public” }, { "And": [ { "Variable": "$.value", "NumericGreaterThanEquals": 20 }, { "Variable": "$.value", "NumericLessThan": 30 } ], "Next": "ValueInTwenties” } ], "Default": "DefaultState” }, • Not • Or • And
  • 25. Amazon State Language • Parallel – 全ての分岐が完了 してから次のState へ進む "Parallel": { "Type": "Parallel", "Next": "Final State", "Branches": [ { "StartAt": "Wait 20s", "States": { "Wait 20s": { "Type": "Wait", "Seconds": 20, "End": true } } }, { "StartAt": "Wait 10s", "States": { "Wait 10s": { "Type": "Wait", "Seconds": 10, "End": true } } } ] },
  • 26. Amazon State Language • Wait – Seconds – SecondsPath – Timestamp – TimestampPath "wait_ten_seconds" : { "Type" : "Wait", "Seconds" : 10, "Next": "NextState” } "wait_until" : { "Type": "Wait", "Timestamp": "2016-03-14T01:59:00Z", "Next": "NextState” } "wait_until" : { "Type": "Wait", "TimestampPath": "$.expirydate", "Next": "NextState” }
  • 27. Agenda • AWS Step Functions とは • Amazon State Language • Step Functions の実⾏ – State Machine の実⾏⽅法 – Activity Task の実⾏
  • 28. State Machine の実⾏ • start-execution API Step Functions State Machine start-execution
  • 29. State Machine の実⾏ • start-execution API Lambda Step Functions State Machine start-execution
  • 30. State Machine の実⾏ • start-execution API API Gateway S3 SNS Cloud Watch Event Lambda Step Functions State Machine start-execution
  • 31. State Machine の実⾏ • 実⾏結果 – State Machine ごとに管理
  • 32. State Machine の実⾏ • 実⾏結果 – State Machine の実⾏毎に管理
  • 33. State Machine の実⾏ • 実⾏結果 – State 毎に管理
  • 34. Agenda • AWS Step Functions とは • Amazon State Language • Step Functions の実⾏ – State Machine の実⾏⽅法 – Activity Task の実⾏
  • 35. Activity Taskの実⾏ • Lambda以外のアプリケーションの実⾏ –EC2 –オンプレミス • Pull型の実⾏ – アプリケーションからポーリング – LambdaはPush型
  • 38. Activity Taskの実⾏ • State Machineの作成 { "Comment": "An example using a Task state.", "StartAt": "getGreeting", "Version": "1.0", "TimeoutSeconds": 300, "States": { "getGreeting": { "Type": "Task", "Resource": "arn:aws:states:eu_central-1:123456789012:activity:get-greeting", "End": true } } }
  • 39. Activity Taskの実⾏ • アプリケーションからポーリング – Get-Activity-Task API Polling Get-Activity-Task --Activity ARN --Worker Name (Option) Worker State Machine
  • 40. Activity Taskの実⾏ • State Machine実⾏ Input TaskToken In progress Get-Activity-Task --Activity ARN --Worker Name (Option) Worker State Machine
  • 43. まとめ • Step Functionsを使うことで分散アプリケーション による複雑な処理を簡単に定義・実⾏・管理 • マイクロサービス化、サーバレス化 • Lambdaだけでなくサーバ上のアプリケーションも 組み込み可能