Más contenido relacionado La actualidad más candente (20) Similar a AWS Step Functions 実践 (20) Más de Shuji Kikuchi (20) AWS Step Functions 実践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 の実⾏
6. AWS Step Functions
• 「Step Functionsやってみた」ブログ公開中
– http://dev.classmethod.jp/referencecat/aws-step-functions/
7. AWS Step Functions
• 分散されたアプリケーションをビジュアルに
コーディネート
– Lambdaなどの複数アプリケーションを⼀連の
ワークフローとして定義・実⾏
– 処理の流れ・ステップをビジュアル化
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
}
}
}
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 の実⾏
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
34. Agenda
• AWS Step Functions とは
• Amazon State Language
• Step Functions の実⾏
– State Machine の実⾏⽅法
– Activity Task の実⾏
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
}
}
}
40. Activity Taskの実⾏
• State Machine実⾏
Input
TaskToken
In progress
Get-Activity-Task
--Activity ARN
--Worker Name (Option)
Worker
State Machine