SlideShare a Scribd company logo
1 of 54
Download to read offline
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS 公式 Webinar
https://amzn.to/JPWebinar
過去資料
https://amzn.to/JPArchive
Solutions Architect 今村 優太
AWS Step Functions
サービスカットシリーズ
[AWS Black Belt Online Seminar]
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
自己紹介
❏ 名前
今村 優太
❏ 所属
アマゾン ウェブ サービス ジャパン 株式会社
技術統括本部
ソリューション アーキテクト
❏ 好きなAWSのサービス
AWS Lambda AWS Step Functions AWS AppSync
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Black Belt Online Seminar とは
「サービス別」「ソリューション別」「業種別」のそれぞれのテーマに分かれて、アマゾ
ン ウェブ サービス ジャパン株式会社が主催するオンラインセミナーシリーズです。
質問を投げることができます!
• 書き込んだ質問は、主催者にしか見えません
• 今後のロードマップに関するご質問は
お答えできませんのでご了承下さい
① 吹き出しをクリック
② 質問を入力
③ Sendをクリック
Twitter ハッシュタグは以下をご利用ください
#awsblackbelt
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
内容についての注意点
• 本資料では2019年5月22日時点のサービス内容および価格についてご説明しています。最新の情
報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。
• 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価格に相
違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。
• 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、別途消
費税をご請求させていただきます。
• AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to
change in accordance with the AWS Customer Agreement available at
http://aws.amazon.com/agreement/. Any pricing information included in this document is provided
only as an estimate of usage charges for AWS services based on certain information that you
have provided. Monthly charges will be based on your actual use of AWS services, and may vary
from the estimates provided.
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
本日のアジェンダ
 Step Functions 概要
 ステートマシン
 データの入出力
 State の記述
 実行状況の確認
 補足や料金詳細など
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
本日のアジェンダ
 Step Functions 概要





© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
The Twelve-Factor App: モダンなアプリ開発のベストプラクティス
https://12factor.net/ja/
(抜粋) Twelve-Factor のプロセスはステートレスかつシェアードナッシング である。
永続化する必要のあるすべてのデータは、ステートフルなバックエンドサービス
(典型的にはデータベース)に格納しなければならない。
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
現代のアプリケーション : 複数のプロセスが密接に関連
DatabaseQueue
Server
Process
Process
Process
Process
Process
Process
Process
Process
Process
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
現代のアプリケーションを構成するには…
"複数のプロセスを同期実行させたい"
"条件分岐させたい"
"一定条件でリトライさせたい"
"例外やエラーを補足したい"
"状態を次のプロセスに連携させたい"
"複数のプロセスを並列実行させたい"
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Step Functions
 分散アプリケーション・マイクロサービスの全体
を「ステートマシン」(後述) と呼ばれる仕組みで
オーケストレートできる
 定義したステートマシンは AWS コンソールから
「ワークフロー」(右図) という形式で見やすく可
視化できる
 ステートマシンの各ステップの実行履歴をログか
ら追跡できる
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
本日のアジェンダ

 ステートマシン




© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
日常のステートマシンの例 : 自動販売機
入金待ち
ジュースの選択
ジュースの
払い出し
自動販売機
金額
釣銭・ジュース
利用者が入金するまで待機する。
ジュースの購入に十分な金額が入金されたら、金額を次のプ
ロセスに伝える。
例えば 3 つのプロセスに分離できる。
利用者がジュースを選択するまで待機する。
ジュースが選択されたら、入金額からジュースの金額を差し
引き、釣銭の金額を計算する。
釣銭の金額と、選択されたジュースを次のプロセスに伝える。
釣銭と選択されたジュースを実際に受け取り口に払い出す。
この 2 つのプロセスは並列に実行できる。
釣銭の
払い出し
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
同時実行可能
Start
End
HelloWorld
Start
End
HelloWorld
Start
End
HelloWorld
Start
End
HelloWorld
Start
End
HelloWorld
Start
End
HelloWorld
Start
End
HelloWorld
Step Functions で作成したステートマシンは、複数種類を同時に実行が可能。
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ステートマシンの作成
ASL (Amazon States Language) と呼ばれる JSON 形式の言語でワークフロー
を定義。
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
{
"StartAt": "Parallel",
"States": {
"parallel": {
"Type": "Parallel",
"End": true,
ASL のチェックツール
awslabs/statelint https://github.com/awslabs/statelint
• Ruby ベースの ASL 記述チェックツール
• ‘gem install statelint’ でインストール
• ‘statelint <ASL のファイル名>’ で検証。不正であればエラーを表示。
Parallel を parallel にtypo
2 errors:
StartAt value Parallel not found in States field at
State Machine
No transition found to state State Machine.parallel
検証
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Step Functions におけるステートマシンの例
開始
ExtractImageMetadata
StoreImageMetadata
ImageTypeCheck
NotSupportedImageTyp
e
AddRekognizedTags
ThumbnailRekognition
終了
Choice
Task
Fail
Parallel
アップロードされた画像に対して、自動でタグ付けとサムネイル化を行うようなアプリケー
ションの場合、このようなステートマシンが考えられる
これらステートマシンを構成する要素のことを State と呼ぶ
(1) メタデータの抽出
(3) メタデータの保存
(2) 画像フォーマットの検
証
(不正な場合はエラー)
(4) 画像解析とサムネイル
化
(5) タグの付与
Cat
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ステートマシンの実行方法 (呼び出し元)
• Amazon CloudWatch Events : S3 へのファイル保存や EC2 の起動といっ
たイベントを契機に実行
• Amazon API Gateway : ある API が呼ばれた際のバックエンドとして実行
• マネジメント コンソール : コンソールから手動で実行
• AWS CLI : コマンドラインから実行
• 各種 SDK : Lambda や EC2 に実装したアプリケーションから実行
ステートマシンを呼び出す方法として下記が利用可能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ステートマシンから呼び出し可能な AWS のサービス
• AWS Lambda : Lambda 関数の実行
• Amazon DynamoDB : 既存のアイテムの取得、新規アイテムの登録
• AWS Batch : ジョブの起動、ジョブ完了の待機
• Amazon Elastic Container Service : ECS/Fargate タスクの実行
• Amazon Simple Notification Service : SNS トピックへのメッセージ送信
• Amazon Simple Queue Service : SQS キューへのメッセージ送信
• AWS Glue : Glue ジョブの実行
• Amazon SageMaker : トレーニングジョブ、トランスフォームジョブの起動
これらに加えて、Activity (後述) と呼ばれる、自身で定義したサービスを紐付けることも可
能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Activity
サーバーやコンテナ等に実装したアプリケーションからポーリングすることで、
独自定義の処理を実行する仕組み
ポーリング
ハートビート
Traditional server
Amazon EC2
Amazon ECS
(1) 独自に実装したアプリケーションから
Step Functions を定期ポーリングする
(3) Activity の State に達するとポーリング
に対して応答が返却される
(2) ステートマシンを実行する
(4) アプリケーションで処理を実行し、
結果をステートマシンに通知する
(加えてデッドロック回避のため、アプリケーションから
ハートビートを送り、死活監視を行うことが可能)
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
本日のアジェンダ


 データの入出力



© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データの入力 (InputPath)
{
"title": "Numbers to add",
"numbers": [ 3, 4 ]
}
{
"Type": "Task",
"InputPath": "$.numbers",
"Resource": "arn:aws:lambda…"
…
[ 3, 4 ]
入力データを指定
(最大 32,768 文字ま
で)
渡された入力のうち、何を State 内で使用するかを指定
定義内の InputPath フィールド
で State に引き渡す内容を指定。
書式は JsonPath 構文 (※) を使
う。
実際に値が State へ入力として
引き渡される
(※) https://github.com/json-path/JsonPath
ASL
[ 3, 4 ]
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データの入力 (Parameters)
{
"title": "Numbers to add",
"numbers": [ 3, 4 ]
}
{
"Type": "Task",
"Parameters": {
"calc.$": "$.numbers"
},
"Resource": "arn:aws:lambda…"
…
{
"calc": [ 3, 4 ]
}
入力データを指定
(最大 32,768 文字ま
で)
渡された入力から、「キーと値」のペアを生成して State に渡す
定義内の Parameters フィール
ドで State に引き渡す内容を指
定。
InputPath と異なり JSON が構
成できる。
キーと値の JSON 形式で State
へ引き渡される
ASL
{
"calc": [ 3, 4 ]
}
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
処理結果の受け取り (ResultPath)
データを入力
合計を計算
定義内の ResultPath フィール
ドで結果を受け取るフィールド
名を指定
State の出力に、入力データと、
State の実行結果が含められる
{
"title": "Numbers to add",
"numbers": [ 3, 4 ]
}
{
"Type": "Task",
"InputPath": "$.numbers",
"ResultPath": "$.sum",
…
{
"title": "Numbers to add",
"numbers": [ 3, 4 ],
"sum": 7
}
[ 3, 4 ]
7
State の実行結果をどのようなフィールド名で受け取るか指定
ASL
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データの出力 (OutputPath)
次の State に対して引き渡す (出力する) データを指定
定義内の OutputPath フィール
ドで次の State に引き渡す内容
を指定。
次の State に対して指定した
値が引き渡される
(最大 32,768 文字まで)
{
"title": "Numbers to add",
"numbers": [ 3, 4 ]
}
{
"Type": "Task",
"InputPath": "$.numbers",
"ResultPath": "$.sum",
"OutputPath": "$[‘title’, ‘sum’]"
{
"title": "Numbers to add",
"sum": 7
}
合計を計算
[ 3, 4 ]
7
データを入力
ASL
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データの入出力まとめ
State"InputPath" "ResultPath" "OutputPath"
Input
Output
"Parameters"
 InputPath や Parameters が未指定の場合、入力のテキストデータがそのまま State に渡される。
 InputPath と Parameters が両方指定されていた場合、入力データに InputPath が適用され、適
用後のデータにさらに Parameters が適用される。
 ResultPath が未指定の場合、入力のテキストデータは削除され State の実行結果が OutputPath
に渡される。
 OutputPath が未指定の場合、ResultPath までを加味した結果がそのまま出力になる。
 入力および出力は JSON 形式で行うのが一般的。
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
本日のアジェンダ



 State の記述


© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ステートマシン全体の設定
ステートマシンは ASL で定義するが、下記のような
フィールドを指定することができる。
 Comment : テキストで任意のコメントを入力できる。
 StartAt : 一番最初に実行する State を指定する。
 TimeoutSeconds : 秒数を指定する。ステートマシン全体
の実行時間がこの秒数を超過するとタイムアウトエラー
になり実行が終了する。
 Version : ASL のバージョンを指定。既定では 1.0。
 States : ステートマシンを構成する State を指定する。複
数含めることが可能。
{
"Comment": "A Hello World example of the
Amazon States Language using a Pass state",
"StartAt": "HelloWorld",
"TimeoutSeconds": 600,
"Version": "1.0",
"States": {
"HelloWorld": {
"Type": "Pass",
"Result": "Hello World!",
"End": true
}
}
}
https://docs.aws.amazon.com/ja_jp/step-
functions/latest/dg/amazon-states-
language-state-machine-structure.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
7 種類の State Type
Task 単一の処理を行う
Wait 指定した時間の間、処理をストップする
Pass 入力をそのまま出力へ渡す
Parallel 並列に処理を実行する
Choice 一定の条件により分岐する
Fail 実行結果を失敗として終了する
Succeed 実行結果を成功として終了する
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
State Type : Task
{
"StartAt": "Put Message",
"TimeoutSeconds": 3600,
"States": {
"Put Message": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:putItem",
"Parameters": {
"TableName": "StepFunctionsSample",
"Item": {
"MessageId": {
"S": "this is a test message"
}
}
},
"End": true
}
}
}
最も基本的な State Type。ステートマシンによって実行され
る単一の作業単位を表す。Lambda や DynamoDB といった
リソースに対して処理の実行を指示する。
下記のフィールドが存在。
 Resource : Lambda や DynamoDB といったサービスに対して実行
する処理を ARN 形式で指定
 Parameters : Resource で指定したリソースに渡すパラメータを指
定。Lambda や DynamoDB、SNS などサービスにより内容は異な
る。
 TimeoutSeconds : 秒数を指定し、実行時間がこの秒数を超えると
タイムアウトエラーになる。
 HeartbeatSeconds : 秒数を指定し、Activity にのみ適用される。
Activity が Step Functions の SendTaskHeartbeat API を、ここで指
定した秒数以内に定期実行しないと、タイムアウトエラーになる。
 ResultPath : State の出力をどのような名称で受け取るか指定。
 Retry : エラーのハンドリングに使用 (後述)
 Catch : エラーのハンドリングに使用 (後述)
https://docs.aws.amazon.com/ja_jp/step-
functions/latest/dg/amazon-states-language-
task-state.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
State Type : Wait
指定された時間だけ待機して、次の State
に
状態遷移させる場合に利用する State Type。
次のうちいずれかを指定する。
 Seconds : 待機する時間を秒単位で指定
 Timestamp : ISO8601 形式で、いつまで待機す
るかを指定 (例 : 2019-08-18T17:33:00Z)
 SecondsPath : State への入力データのうち、待
機する時間 (秒単位) を JsonPath 構文で指定
 TimestampPath : State への入力データのうち、
いつまで待機するか、時間を JsonPath 構文で
指定
{
"StartAt": "Wait State",
"States": {
"Wait State": {
"Type": "Wait",
"Seconds": 20,
"Next": "Next State"
},
"Next State": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:putItem",
"Parameters": {
"TableName": "StepFunctionsSample",
"Item": {
"MessageId": {
"S": "this is a test message"
}
}
},
"End": true
}
}
}
https://docs.aws.amazon.com/ja_jp/step-
functions/latest/dg/amazon-states-language-wait-
state.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
State Type : Pass
何も作業をせずに入力を次の出力に渡す
State Type。ステートマシンをデバッグす
る際にも利用できる。
次のフィールドを利用できる。
 Result : State の実行結果を指定。
 ResultPath : Result をどのようなパラメータ名
で受け取るか指定。
 Parameters : 前述のとおり、入力されたデータ
から「キーと値」の JSON を生成。
{
"StartAt": "Show Axis",
"States": {
"Show Axis": {
"Type": "Pass",
"Result": {
"x-axis": 10,
"y-axis": 20
},
"ResultPath": "$.axis",
"End": true
}
}
}
https://docs.aws.amazon.com/ja_jp
/step-functions/latest/dg/amazon-
states-language-pass-state.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
State Type : Parallel
並列に State を実行するときに使用する State Type。並列
実行される State のうち、いずれかが失敗すると、Parallel
の State 全体が失敗扱いになる点に注意。
 Branches : 配列で、並列に実行する State を指定
 ResultPath : Parallel の State の出力をどのようなパラメータで受け
取るか指定。
 Retry : Branches 内の State のエラーのハンドリングに使用 (後述)
 Catch : Branches 内の State のエラーのハンドリングに使用 (後述)
{
"Comment": "Parallel Example.",
"StartAt": "LookupCustomerInfo",
"States": {
"LookupCustomerInfo": {
"Type": "Parallel",
"End": true,
"Branches": [{
"StartAt": "LookupAddress",
"States": {
"LookupAddress": {
"Type": "Task",
"Resource": "(..省略..)",
"End": true
}
}
},
{
"StartAt": "LookupPhone",
"States": {
"LookupPhone": {
"Type": "Task",
"Resource": "(..省略..)",
"End": true
}
}
}]
}
}
}
Parallel の State の出力は配列形式で生成される。
たとえば、入力が [3, 2] に対して、加算の State と減算の State を
並列に実行した場合、出力は [5, 1] といった結果が得られる。
https://docs.aws.amazon.com/ja_jp/step-
functions/latest/dg/amazon-states-language-parallel-
state.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
State Type : Choice
条件分岐のロジックを記載するときに使用する State
Type。
 Default : どの条件にも合致しなかったときに実行する State を指定
 Choices : 配列形式で条件分岐の内容を指定する
 Variable : State への入力のうち指定したフィールドを条件分岐に利用す
る
 Next : 条件に合致したときに遷移する State を指定
 NumericEquals : Variable に対する比較演算子と、比較する値を指定。
その他にも以下の比較演算子が利用可能。
{
"StartAt": "Choice State",
"States": {
"Choice State": {
"Type" : "Choice",
"Choices": [
{
"Variable": "$.choice",
"NumericEquals": 1,
"Next": "Succeed State"
}
],
"Default": "Fail State"
},
"Succeed State": {
"Type" : "Succeed"
},
"Fail State": {
"Type": "Fail",
"Error": "DefaultStateError",
"Cause": "No Matches!"
}
}
}
•And
•BooleanEquals
•Not
•NumericEquals
•NumericGreaterThan
•NumericGreaterThanEquals
•NumericLessThan
•NumericLessThanEquals
•Or
•StringEquals
•StringGreaterThan
•StringGreaterThanEquals
•StringLessThan
•StringLessThanEquals
•TimestampEquals
•TimestampGreaterThan
•TimestampGreaterThanEquals
•TimestampLessThan
•TimestampLessThanEquals
https://docs.aws.amazon.com/ja_jp/step-
functions/latest/dg/amazon-states-language-choice-state.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
State Type : Succeed
ステートマシン実行を正常停止させる State Type。
主に Choice State Type の遷移先に使われる。
特に追加のフィールドはなく、停止させるための
State Type であるため、Next や End フィールドは不
要。
{
"StartAt": "Choice State",
"States": {
"Choice State": {
"Type" : "Choice",
"Choices": [
{
"Variable": "$.choice",
"NumericEquals": 1,
"Next": "Succeed State"
}
],
"Default": "Fail State"
},
"Succeed State": {
"Type" : "Succeed"
},
"Fail State": {
"Type": "Fail",
"Error": "DefaultStateError",
"Cause": "No Matches!"
}
}
}
https://docs.aws.amazon.com/ja_jp/step-
functions/latest/dg/amazon-states-language-succeed-
state.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
State Type : Fail
ステートマシン実行を失敗としてマークさせる State
Type。停止させるための State Type であるため、
Next や End フィールドは不要。
次のフィールドを使用できる。
{
"StartAt": "Choice State",
"States": {
"Choice State": {
"Type" : "Choice",
"Choices": [
{
"Variable": "$.choice",
"NumericEquals": 1,
"Next": "Succeed State"
}
],
"Default": "Fail State"
},
"Succeed State": {
"Type" : "Succeed"
},
"Fail State": {
"Type": "Fail",
"Error": "DefaultStateError",
"Cause": "No Matches!"
}
}
}
 Error : エラー名を指定。Retry や例外の Catch に使
用できる。
 Cause : エラーの理由を文字列で指定
https://docs.aws.amazon.com/ja_jp/step-
functions/latest/dg/amazon-states-language-fail-state.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
State の Retry
State Type が Task もしくは Parallel の場合、Retry
というフィールドを定義できる。State でエラーが発
生した際に再試行させる際に利用する。
 ErrorEquals : リトライの対象とするエラーを指定 (後述)
 IntervalSeconds : 最初のリトライまでの秒数。
 BackoffRate : リトライ間隔を増加させる乗数。左記の設定
の場合、1 回目のリトライは 3 秒後に行われ、再び失敗す
る。2 回目のリトライは、1 回目のリトライからさらに 3 x
2.0 = 6 秒後に行われる。3 回目のリトライは、2 回目のリ
トライから 3 x 2.0 x 2.0 = 12 秒後、4 回目のリトライは、
3 回目のリトライから 3 x 2.0 x 2.0 x 2.0 = 24 秒後に行わ
れる。
 MaxAttempts : リトライを行う回数。ここで指定した回数リ
トライが失敗すると、State の実行が失敗となる。
{
"StartAt": "Parallel",
"States": {
"Parallel": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "FailState",
"States": {
"FailState": {
"Type": "Fail"
}
}
}
],
"Retry": [
{
"ErrorEquals": ["States.ALL"],
"IntervalSeconds": 3,
"BackoffRate": 2.0,
"MaxAttempts": 4
}
]
}
}
}
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
State のエラー処理 (Catch)
State Type が Task もしくは Parallel の場合、Catch
というフィールドを定義できる。
 ErrorEquals : エラーの条件を指定。
 Next : エラー条件に該当した際に遷移させる State を指定。
 ResultPath : エラーの内容を出力に含める際に指定する。左記
の場合、以下のような出力が得られる。
{
"StartAt": "Parallel",
"States": {
"Parallel": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "FailState",
"States": {
"FailState": {
"Type": "Fail",
"Error": "An Error Occurred",
"Cause": "Unknown"
}
}
}
],
"Catch": [{
"ErrorEquals": ["States.ALL"],
"Next": "Fallback",
"ResultPath": "$.error"
}]
},
"Fallback": {
"Type": "Pass",
"End": true
}
}
}
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ErrorEquals によるエラー判定
Retry や Catch フィールドでは、どのようなエラーのときに条件に合致したと
みなすか、ErrorEquals フィールドで指定する
 States.ALL : すべてのエラーに合致する
 States.Timeout : State がタイムアウトした際に合致す
る
 States.TaskFailed : State 実行に失敗した際に合致する
 States.Permissions : State 実行の権限が無かった際に
合致する
{
"StartAt": "Parallel",
"States": {
"Parallel": {
"Type": "Parallel",
"End": true,
..(省略)..
"Catch": [{
"ErrorEquals": ["States.ALL"],
"Next": "Fallback",
"ResultPath": "$.error"
}]
},
"Fallback": {
"Type": "Pass",
"End": true
}
}
}
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ErrorEquals によるエラー判定 (独自実装の例外)
State から Lambda 関数を実行する場合、関数で実装した例外を条件とすることも可能
{
"StartAt": "CreateAccount",
"States": {
"CreateAccount": {
"Type": "Task",
"Resource": "...(省略)...",
"Next": "NextState",
"Catch": [{
"ErrorEquals": ["AccountAlreadyExistsException"],
"Next": "FallbackState"
}]
},
...(省略)...
}
}
Python
Java
AccountAlreadyExistsException の
例外が発生した場合を捕捉 (Catch)
その他、C# や Node.js など、例外の表現については、言語ご
との Lambda 関数の記述方式に従う。
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
本日のアジェンダ




 実行状況の確認

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
実行の状況の確認と中断
ステートマシンの実行には任意の名称を付与することができる
実行ごとに状況の確認や、途中で中断させることができる
進行中の State は水色で表示される
この実行の名称 実行の途中停止
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ステートマシンの実行結果
State ごとにどのような実行結果であったのか、および全体の実行履歴を確認す
ることが可能。
緑色になった State は、
実行され成功したものを表す
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ステートマシンの実行通知
ステートマシンの実行ステータスが変化した際に、CloudWatch Events に対して
イベントを発行することができる
サービス名 : Step Functions
イベントタイプ : Step Functions Execution Status Change
を選択。
その他に、タイムアウトなど、どのステータスのときにイベントを
発行するか、またどのステートマシンを対象にするかを選択できる。
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
パフォーマンスの監視
Amazon CloudWatch より以下の 7 種類のメトリクスが監視できる
定義したステートマシンごとに確認することが可能
ExecutionTime 実行の開始時点から終了時点までの間隔 (ミリ秒単位)。
ExecutionThrottled 制限 (後述) に該当しスロットリングされた実行の数。
ExecutionsAborted 中断された実行の数。
ExecutionsFailed 失敗した実行の数。
ExecutionsStarted 開始された実行の数。
ExecutionsSucceeded 正常に完了した実行の数。
ExecutionsTimedOut タイムアウトした実行の数。
https://docs.aws.amazon.com/ja_jp/step-
functions/latest/dg/procedure-cw-metrics.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
本日のアジェンダ





 補足や料金詳細など
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Step Functions が利用可能なリージョン
AWS Step Functions は 21 のリージョン全てでご利用可能
(2019/05/22現在、大阪ローカルリージョンを除く)
Sydney
Tokyo
Beijing
Seoul
Ningxia
Hong Kong
Singapore
Mumbai
Sweden
Ireland London
Frankfurt
Paris
São Paulo
Montreal
AWS GovCloud
East
N.Virginia
Ohio
AWS GovCloud
West
Oregon
N. California
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
料金 (2019/05/22 時点)
(例) 1 ヶ月の状態遷移の合計数: 3 回の状態遷移 x 10 万回の実行 = 30 万回の状態遷移
1 ヶ月の料金: (300,000 – 4,000 回の無料枠) x 状態遷移 1 回あたり 0.000025 USD = 7.40 USD
状態遷移=4回
・Select image converter
・RAW to Tiff
・Load in Database
・End
状態遷移=3回
・Select image converter
・Unsupported Image Type
・End
• 状態遷移 1,000 回あたり $0.025 (Tokyo Region)
• 状態遷移 1 回あたり $0.000025
• 毎月 4,000 回までの状態遷移は無料
• 価格はリージョンごとに異なる
• リトライは追加の状態遷移として計算
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Step Functions の主な制限
 SLA : 99.9 %
 ステートマシンの最大数 : 10,000 (1 アカウントあたり)
 Activity の最大数 : 10,000 (1 アカウントあたり)
 最大リクエストサイズ : 1 MB (1 API リクエストあたり)
 API リクエストに含めることが可能な合計データのサイズ
 ステートマシンの最大実行時間 : 1 年 (1 実行あたり)
 ステートマシンの実行履歴の最大サイズ : 25,000 イベント (1 実行あたり)
 実行履歴の上限に達するとステートマシンの実行は失敗する。
 State への入出力の最大データサイズ : 32,768 文字
 State 遷移の合計数 : 1 アカウント・1 リージョン内のすべてのステートマシンに対して State 遷移
の合計数が計算され、トークンバケットアルゴリズム (後述) にもとづいた下記の制限が適用される。
 バケットサイズ : 800 (Tokyo リージョンの場合)
 1 秒ごとの補充レート : 400 (Tokyo リージョンの場合)
https://docs.aws.amazon.com/ja_jp/step
-functions/latest/dg/limits.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
スロットリング - トークンバケットアルゴリズム
一部のスロットリングはトークンバケットアルゴリズムに基づく
「レート」と「バースト」の2つの設定値に従って行われる
バケット
「レート」=トークンの補充スピード =
「バケットに追加されるトークン数/秒」
(アカウントレベルの初期値 … 400 /秒)
ステートマシンで
State 遷移が発生
1つの State 遷移は
1つのトークンを消費
「バースト(バースト上限)」= バケット内のトークンの初期値 兼 バケット最大サイズ
(アカウントレベルの初期値 … 800)
トークン →
トークンを使い果たすと State 遷移が制
限 (スロットリング) され失敗する
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Step Functions Local
• 開発者のローカル環境でテストするためのツールで、ローカル環境に Step Functions のテスト用ランタイムが起動す
る。
• JAR パッケージもしくは Docker コンテナとして利用可能で、AWS SAM Local といったその他のローカル環境向けテ
ストツールとも連携できる。
• AWS CLI のオプションでエンドポイントを指定できるので、起動した Step Functions Local のサーバーを指定するこ
とで、コマンドラインから Step Functions の動作をローカル環境で検証できる。
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
その他類似サービスとの使い分け
• Amazon Simple Queue Service (SQS)
• マネージドなメッセージ キューイングサービス
• サービス間のメッセージの管理に、スケーラブルで信頼性が高いキューが必要な場合は
SQS
• 処理の追跡や、サービス間のメッセージの受け渡しなど、アプリケーション開発に役立つ機
能をマネージドに利用したい場合は Step Functions
• Amazon Simple Workflow Service (SWF)
• Decider と呼ばれる、プログラミングベースでワークフロー制御を行うサービス
• Java もしくは Ruby の AWS Flow Framework と併用するのが一般的
• Step Functions と比較して複雑化するため、新規開発では Step Functions を使うことを推奨https://aws.amazon.com/jp/step-functions/faqs/
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ユースケース
 データプロセシング : 複数のデータストアを利用する分析や機械学習
 e コマース : 在庫追跡や注文処理
 動画処理 : サムネイルの生成、ビデオのエンコーディング
 バッチ処理 : ゲノム情報解析のような学術領域
 ウェブアプリケーション : 複雑なユーザー登録プロセス
 管理者承認 : 管理者が承認した場合に限り処理を行う
相互に依存するような複数の処理を組み合わせたい場合に最適
...etc
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
まとめ:AWS Step Functions のメリット
アプリケーションを構成
する関数全体を管理する
ための余分なコーディン
グが不要になる
アプリケーションを数分
で構築し、アプリケー
ションが意図したとおり
に動作するように各ス
テップの実行を可視化お
よび追跡できる
各ステップの状態を追跡
し、リトライやロール
バックによりエラーに対
応できる
アプリケーションを
すぐに構築可能
コーディング不要 耐久性の向上
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS 公式 Webinar
https://amzn.to/JPWebinar
過去資料
https://amzn.to/JPArchive
ご視聴ありがとうございました

More Related Content

What's hot

20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-RayAmazon Web Services Japan
 
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 ResolverAmazon Web Services Japan
 
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
20210126 AWS Black Belt Online Seminar AWS CodeDeploy20210126 AWS Black Belt Online Seminar AWS CodeDeploy
20210126 AWS Black Belt Online Seminar AWS CodeDeployAmazon Web Services Japan
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをなAmazon Web Services Japan
 
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway 20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway Amazon Web Services Japan
 
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDutyAmazon Web Services Japan
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems ManagerAmazon Web Services Japan
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...Amazon Web Services Japan
 
20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMR20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMRAmazon Web Services Japan
 
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatchAmazon Web Services Japan
 
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用Amazon Web Services Japan
 
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)Amazon Web Services Japan
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...Amazon Web Services Japan
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)Amazon Web Services Japan
 
20190319 AWS Black Belt Online Seminar Amazon FSx for Windows Server
20190319 AWS Black Belt Online Seminar Amazon FSx for Windows Server20190319 AWS Black Belt Online Seminar Amazon FSx for Windows Server
20190319 AWS Black Belt Online Seminar Amazon FSx for Windows ServerAmazon Web Services Japan
 
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...Amazon Web Services Japan
 
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
20180221 AWS Black Belt Online Seminar AWS Lambda@EdgeAmazon Web Services Japan
 
20200617 AWS Black Belt Online Seminar Amazon Athena
20200617 AWS Black Belt Online Seminar Amazon Athena20200617 AWS Black Belt Online Seminar Amazon Athena
20200617 AWS Black Belt Online Seminar Amazon AthenaAmazon Web Services Japan
 
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model  20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model Amazon Web Services Japan
 
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...Amazon Web Services Japan
 

What's hot (20)

20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray
 
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
 
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
20210126 AWS Black Belt Online Seminar AWS CodeDeploy20210126 AWS Black Belt Online Seminar AWS CodeDeploy
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
 
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway 20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway
 
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
 
20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMR20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMR
 
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
 
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
 
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
 
20190319 AWS Black Belt Online Seminar Amazon FSx for Windows Server
20190319 AWS Black Belt Online Seminar Amazon FSx for Windows Server20190319 AWS Black Belt Online Seminar Amazon FSx for Windows Server
20190319 AWS Black Belt Online Seminar Amazon FSx for Windows Server
 
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
 
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
 
20200617 AWS Black Belt Online Seminar Amazon Athena
20200617 AWS Black Belt Online Seminar Amazon Athena20200617 AWS Black Belt Online Seminar Amazon Athena
20200617 AWS Black Belt Online Seminar Amazon Athena
 
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model  20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
20190814 AWS Black Belt Online Seminar AWS Serverless Application Model
 
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
 

Similar to 20190522 AWS Black Belt Online Seminar AWS Step Functions

Designing and Implementing a Serverless Media Processing Workflow Using AWS S...
Designing and Implementing a Serverless Media Processing Workflow Using AWS S...Designing and Implementing a Serverless Media Processing Workflow Using AWS S...
Designing and Implementing a Serverless Media Processing Workflow Using AWS S...Amazon Web Services
 
NEW LAUNCH! Serverless Apps with AWS Step Functions
NEW LAUNCH! Serverless Apps with AWS Step FunctionsNEW LAUNCH! Serverless Apps with AWS Step Functions
NEW LAUNCH! Serverless Apps with AWS Step FunctionsAmazon Web Services
 
Introduction to AWS Step Functions
Introduction to AWS Step FunctionsIntroduction to AWS Step Functions
Introduction to AWS Step FunctionsAmazon Web Services
 
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션Amazon Web Services Korea
 
Advanced Serverless Apps With Step Functions
Advanced Serverless Apps With Step FunctionsAdvanced Serverless Apps With Step Functions
Advanced Serverless Apps With Step FunctionsAmazon Web Services
 
20200803 - Serverless with AWS @ HELTECH
20200803 - Serverless with AWS @ HELTECH20200803 - Serverless with AWS @ HELTECH
20200803 - Serverless with AWS @ HELTECHMarcia Villalba
 
Advanced Serverless Apps With Step Functions
Advanced Serverless Apps With Step FunctionsAdvanced Serverless Apps With Step Functions
Advanced Serverless Apps With Step FunctionsAmazon Web Services
 
SMC304 Serverless Orchestration with AWS Step Functions
SMC304 Serverless Orchestration with AWS Step FunctionsSMC304 Serverless Orchestration with AWS Step Functions
SMC304 Serverless Orchestration with AWS Step FunctionsAmazon Web Services
 
Containers and mission-critical applications - SEP309-R - AWS re:Inforce 2019
Containers and mission-critical applications - SEP309-R - AWS re:Inforce 2019 Containers and mission-critical applications - SEP309-R - AWS re:Inforce 2019
Containers and mission-critical applications - SEP309-R - AWS re:Inforce 2019 Amazon Web Services
 
Automate your Amazon SageMaker Workflows (July 2019)
Automate your Amazon SageMaker Workflows (July 2019)Automate your Amazon SageMaker Workflows (July 2019)
Automate your Amazon SageMaker Workflows (July 2019)Julien SIMON
 
What's new in Serverless at AWS?
What's new in Serverless at AWS?What's new in Serverless at AWS?
What's new in Serverless at AWS?Daniel Zivkovic
 
Immersion Day - Estratégias e melhores práticas para ingestão de dados
Immersion Day - Estratégias e melhores práticas para ingestão de dadosImmersion Day - Estratégias e melhores práticas para ingestão de dados
Immersion Day - Estratégias e melhores práticas para ingestão de dadosAmazon Web Services LATAM
 
The Best Practices and Hard Lessons Learned of Serverless Applications - AWS ...
The Best Practices and Hard Lessons Learned of Serverless Applications - AWS ...The Best Practices and Hard Lessons Learned of Serverless Applications - AWS ...
The Best Practices and Hard Lessons Learned of Serverless Applications - AWS ...Amazon Web Services
 
AWS Startup Day - Boston 2018 - The Best Practices and Hard Lessons Learned o...
AWS Startup Day - Boston 2018 - The Best Practices and Hard Lessons Learned o...AWS Startup Day - Boston 2018 - The Best Practices and Hard Lessons Learned o...
AWS Startup Day - Boston 2018 - The Best Practices and Hard Lessons Learned o...Chris Munns
 
How LEGO.com Accelerates With Serverless
How LEGO.com Accelerates With ServerlessHow LEGO.com Accelerates With Serverless
How LEGO.com Accelerates With ServerlessSheenBrisals
 
Announcing AWS Step Functions - December 2016 Monthly Webinar Series
Announcing AWS Step Functions - December 2016 Monthly Webinar SeriesAnnouncing AWS Step Functions - December 2016 Monthly Webinar Series
Announcing AWS Step Functions - December 2016 Monthly Webinar SeriesAmazon Web Services
 
NEW LAUNCH! Building Distributed Applications with AWS Step Functions
NEW LAUNCH! Building Distributed Applications with AWS Step FunctionsNEW LAUNCH! Building Distributed Applications with AWS Step Functions
NEW LAUNCH! Building Distributed Applications with AWS Step FunctionsAmazon Web Services
 
Building Advanced Serverless Applications
Building Advanced Serverless ApplicationsBuilding Advanced Serverless Applications
Building Advanced Serverless ApplicationsAmazon Web Services
 

Similar to 20190522 AWS Black Belt Online Seminar AWS Step Functions (20)

Designing and Implementing a Serverless Media Processing Workflow Using AWS S...
Designing and Implementing a Serverless Media Processing Workflow Using AWS S...Designing and Implementing a Serverless Media Processing Workflow Using AWS S...
Designing and Implementing a Serverless Media Processing Workflow Using AWS S...
 
NEW LAUNCH! Serverless Apps with AWS Step Functions
NEW LAUNCH! Serverless Apps with AWS Step FunctionsNEW LAUNCH! Serverless Apps with AWS Step Functions
NEW LAUNCH! Serverless Apps with AWS Step Functions
 
Introduction to AWS Step Functions
Introduction to AWS Step FunctionsIntroduction to AWS Step Functions
Introduction to AWS Step Functions
 
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
AWS Step Functions을 활용한 서버리스 앱 오케스트레이션
 
Advanced Serverless Apps With Step Functions
Advanced Serverless Apps With Step FunctionsAdvanced Serverless Apps With Step Functions
Advanced Serverless Apps With Step Functions
 
20200803 - Serverless with AWS @ HELTECH
20200803 - Serverless with AWS @ HELTECH20200803 - Serverless with AWS @ HELTECH
20200803 - Serverless with AWS @ HELTECH
 
Advanced Serverless Apps With Step Functions
Advanced Serverless Apps With Step FunctionsAdvanced Serverless Apps With Step Functions
Advanced Serverless Apps With Step Functions
 
SMC304 Serverless Orchestration with AWS Step Functions
SMC304 Serverless Orchestration with AWS Step FunctionsSMC304 Serverless Orchestration with AWS Step Functions
SMC304 Serverless Orchestration with AWS Step Functions
 
Containers and mission-critical applications - SEP309-R - AWS re:Inforce 2019
Containers and mission-critical applications - SEP309-R - AWS re:Inforce 2019 Containers and mission-critical applications - SEP309-R - AWS re:Inforce 2019
Containers and mission-critical applications - SEP309-R - AWS re:Inforce 2019
 
Automate your Amazon SageMaker Workflows (July 2019)
Automate your Amazon SageMaker Workflows (July 2019)Automate your Amazon SageMaker Workflows (July 2019)
Automate your Amazon SageMaker Workflows (July 2019)
 
Serverless Apps with AWS Step Functions
Serverless Apps with AWS Step FunctionsServerless Apps with AWS Step Functions
Serverless Apps with AWS Step Functions
 
What's new in Serverless at AWS?
What's new in Serverless at AWS?What's new in Serverless at AWS?
What's new in Serverless at AWS?
 
Immersion Day - Estratégias e melhores práticas para ingestão de dados
Immersion Day - Estratégias e melhores práticas para ingestão de dadosImmersion Day - Estratégias e melhores práticas para ingestão de dados
Immersion Day - Estratégias e melhores práticas para ingestão de dados
 
The Best Practices and Hard Lessons Learned of Serverless Applications - AWS ...
The Best Practices and Hard Lessons Learned of Serverless Applications - AWS ...The Best Practices and Hard Lessons Learned of Serverless Applications - AWS ...
The Best Practices and Hard Lessons Learned of Serverless Applications - AWS ...
 
AWS Startup Day - Boston 2018 - The Best Practices and Hard Lessons Learned o...
AWS Startup Day - Boston 2018 - The Best Practices and Hard Lessons Learned o...AWS Startup Day - Boston 2018 - The Best Practices and Hard Lessons Learned o...
AWS Startup Day - Boston 2018 - The Best Practices and Hard Lessons Learned o...
 
Introduzione a GraphQL
Introduzione a GraphQLIntroduzione a GraphQL
Introduzione a GraphQL
 
How LEGO.com Accelerates With Serverless
How LEGO.com Accelerates With ServerlessHow LEGO.com Accelerates With Serverless
How LEGO.com Accelerates With Serverless
 
Announcing AWS Step Functions - December 2016 Monthly Webinar Series
Announcing AWS Step Functions - December 2016 Monthly Webinar SeriesAnnouncing AWS Step Functions - December 2016 Monthly Webinar Series
Announcing AWS Step Functions - December 2016 Monthly Webinar Series
 
NEW LAUNCH! Building Distributed Applications with AWS Step Functions
NEW LAUNCH! Building Distributed Applications with AWS Step FunctionsNEW LAUNCH! Building Distributed Applications with AWS Step Functions
NEW LAUNCH! Building Distributed Applications with AWS Step Functions
 
Building Advanced Serverless Applications
Building Advanced Serverless ApplicationsBuilding Advanced Serverless Applications
Building Advanced Serverless Applications
 

More from Amazon Web Services Japan

202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFSAmazon Web Services Japan
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device DefenderAmazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現Amazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...Amazon Web Services Japan
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Web Services Japan
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したことAmazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用Amazon Web Services Japan
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdfAmazon Web Services Japan
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介Amazon Web Services Japan
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon Web Services Japan
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチAmazon Web Services Japan
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer ProfilesAmazon Web Services Japan
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨Amazon Web Services Japan
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介Amazon Web Services Japan
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介Amazon Web Services Japan
 
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...Amazon Web Services Japan
 

More from Amazon Web Services Japan (20)

202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
 
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
 

Recently uploaded

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Recently uploaded (20)

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

20190522 AWS Black Belt Online Seminar AWS Step Functions

  • 1. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS 公式 Webinar https://amzn.to/JPWebinar 過去資料 https://amzn.to/JPArchive Solutions Architect 今村 優太 AWS Step Functions サービスカットシリーズ [AWS Black Belt Online Seminar]
  • 2. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 自己紹介 ❏ 名前 今村 優太 ❏ 所属 アマゾン ウェブ サービス ジャパン 株式会社 技術統括本部 ソリューション アーキテクト ❏ 好きなAWSのサービス AWS Lambda AWS Step Functions AWS AppSync
  • 3. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Black Belt Online Seminar とは 「サービス別」「ソリューション別」「業種別」のそれぞれのテーマに分かれて、アマゾ ン ウェブ サービス ジャパン株式会社が主催するオンラインセミナーシリーズです。 質問を投げることができます! • 書き込んだ質問は、主催者にしか見えません • 今後のロードマップに関するご質問は お答えできませんのでご了承下さい ① 吹き出しをクリック ② 質問を入力 ③ Sendをクリック Twitter ハッシュタグは以下をご利用ください #awsblackbelt
  • 4. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 内容についての注意点 • 本資料では2019年5月22日時点のサービス内容および価格についてご説明しています。最新の情 報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。 • 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価格に相 違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。 • 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、別途消 費税をご請求させていただきます。 • AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.
  • 5. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 本日のアジェンダ  Step Functions 概要  ステートマシン  データの入出力  State の記述  実行状況の確認  補足や料金詳細など
  • 6. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 本日のアジェンダ  Step Functions 概要     
  • 7. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. The Twelve-Factor App: モダンなアプリ開発のベストプラクティス https://12factor.net/ja/ (抜粋) Twelve-Factor のプロセスはステートレスかつシェアードナッシング である。 永続化する必要のあるすべてのデータは、ステートフルなバックエンドサービス (典型的にはデータベース)に格納しなければならない。
  • 8. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 現代のアプリケーション : 複数のプロセスが密接に関連 DatabaseQueue Server Process Process Process Process Process Process Process Process Process
  • 9. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 現代のアプリケーションを構成するには… "複数のプロセスを同期実行させたい" "条件分岐させたい" "一定条件でリトライさせたい" "例外やエラーを補足したい" "状態を次のプロセスに連携させたい" "複数のプロセスを並列実行させたい"
  • 10. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Step Functions  分散アプリケーション・マイクロサービスの全体 を「ステートマシン」(後述) と呼ばれる仕組みで オーケストレートできる  定義したステートマシンは AWS コンソールから 「ワークフロー」(右図) という形式で見やすく可 視化できる  ステートマシンの各ステップの実行履歴をログか ら追跡できる
  • 11. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 本日のアジェンダ   ステートマシン    
  • 12. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 日常のステートマシンの例 : 自動販売機 入金待ち ジュースの選択 ジュースの 払い出し 自動販売機 金額 釣銭・ジュース 利用者が入金するまで待機する。 ジュースの購入に十分な金額が入金されたら、金額を次のプ ロセスに伝える。 例えば 3 つのプロセスに分離できる。 利用者がジュースを選択するまで待機する。 ジュースが選択されたら、入金額からジュースの金額を差し 引き、釣銭の金額を計算する。 釣銭の金額と、選択されたジュースを次のプロセスに伝える。 釣銭と選択されたジュースを実際に受け取り口に払い出す。 この 2 つのプロセスは並列に実行できる。 釣銭の 払い出し
  • 13. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 同時実行可能 Start End HelloWorld Start End HelloWorld Start End HelloWorld Start End HelloWorld Start End HelloWorld Start End HelloWorld Start End HelloWorld Step Functions で作成したステートマシンは、複数種類を同時に実行が可能。
  • 14. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ステートマシンの作成 ASL (Amazon States Language) と呼ばれる JSON 形式の言語でワークフロー を定義。
  • 15. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. { "StartAt": "Parallel", "States": { "parallel": { "Type": "Parallel", "End": true, ASL のチェックツール awslabs/statelint https://github.com/awslabs/statelint • Ruby ベースの ASL 記述チェックツール • ‘gem install statelint’ でインストール • ‘statelint <ASL のファイル名>’ で検証。不正であればエラーを表示。 Parallel を parallel にtypo 2 errors: StartAt value Parallel not found in States field at State Machine No transition found to state State Machine.parallel 検証
  • 16. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Step Functions におけるステートマシンの例 開始 ExtractImageMetadata StoreImageMetadata ImageTypeCheck NotSupportedImageTyp e AddRekognizedTags ThumbnailRekognition 終了 Choice Task Fail Parallel アップロードされた画像に対して、自動でタグ付けとサムネイル化を行うようなアプリケー ションの場合、このようなステートマシンが考えられる これらステートマシンを構成する要素のことを State と呼ぶ (1) メタデータの抽出 (3) メタデータの保存 (2) 画像フォーマットの検 証 (不正な場合はエラー) (4) 画像解析とサムネイル 化 (5) タグの付与 Cat
  • 17. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ステートマシンの実行方法 (呼び出し元) • Amazon CloudWatch Events : S3 へのファイル保存や EC2 の起動といっ たイベントを契機に実行 • Amazon API Gateway : ある API が呼ばれた際のバックエンドとして実行 • マネジメント コンソール : コンソールから手動で実行 • AWS CLI : コマンドラインから実行 • 各種 SDK : Lambda や EC2 に実装したアプリケーションから実行 ステートマシンを呼び出す方法として下記が利用可能
  • 18. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ステートマシンから呼び出し可能な AWS のサービス • AWS Lambda : Lambda 関数の実行 • Amazon DynamoDB : 既存のアイテムの取得、新規アイテムの登録 • AWS Batch : ジョブの起動、ジョブ完了の待機 • Amazon Elastic Container Service : ECS/Fargate タスクの実行 • Amazon Simple Notification Service : SNS トピックへのメッセージ送信 • Amazon Simple Queue Service : SQS キューへのメッセージ送信 • AWS Glue : Glue ジョブの実行 • Amazon SageMaker : トレーニングジョブ、トランスフォームジョブの起動 これらに加えて、Activity (後述) と呼ばれる、自身で定義したサービスを紐付けることも可 能
  • 19. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Activity サーバーやコンテナ等に実装したアプリケーションからポーリングすることで、 独自定義の処理を実行する仕組み ポーリング ハートビート Traditional server Amazon EC2 Amazon ECS (1) 独自に実装したアプリケーションから Step Functions を定期ポーリングする (3) Activity の State に達するとポーリング に対して応答が返却される (2) ステートマシンを実行する (4) アプリケーションで処理を実行し、 結果をステートマシンに通知する (加えてデッドロック回避のため、アプリケーションから ハートビートを送り、死活監視を行うことが可能)
  • 20. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 本日のアジェンダ    データの入出力   
  • 21. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データの入力 (InputPath) { "title": "Numbers to add", "numbers": [ 3, 4 ] } { "Type": "Task", "InputPath": "$.numbers", "Resource": "arn:aws:lambda…" … [ 3, 4 ] 入力データを指定 (最大 32,768 文字ま で) 渡された入力のうち、何を State 内で使用するかを指定 定義内の InputPath フィールド で State に引き渡す内容を指定。 書式は JsonPath 構文 (※) を使 う。 実際に値が State へ入力として 引き渡される (※) https://github.com/json-path/JsonPath ASL [ 3, 4 ]
  • 22. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データの入力 (Parameters) { "title": "Numbers to add", "numbers": [ 3, 4 ] } { "Type": "Task", "Parameters": { "calc.$": "$.numbers" }, "Resource": "arn:aws:lambda…" … { "calc": [ 3, 4 ] } 入力データを指定 (最大 32,768 文字ま で) 渡された入力から、「キーと値」のペアを生成して State に渡す 定義内の Parameters フィール ドで State に引き渡す内容を指 定。 InputPath と異なり JSON が構 成できる。 キーと値の JSON 形式で State へ引き渡される ASL { "calc": [ 3, 4 ] }
  • 23. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 処理結果の受け取り (ResultPath) データを入力 合計を計算 定義内の ResultPath フィール ドで結果を受け取るフィールド 名を指定 State の出力に、入力データと、 State の実行結果が含められる { "title": "Numbers to add", "numbers": [ 3, 4 ] } { "Type": "Task", "InputPath": "$.numbers", "ResultPath": "$.sum", … { "title": "Numbers to add", "numbers": [ 3, 4 ], "sum": 7 } [ 3, 4 ] 7 State の実行結果をどのようなフィールド名で受け取るか指定 ASL
  • 24. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データの出力 (OutputPath) 次の State に対して引き渡す (出力する) データを指定 定義内の OutputPath フィール ドで次の State に引き渡す内容 を指定。 次の State に対して指定した 値が引き渡される (最大 32,768 文字まで) { "title": "Numbers to add", "numbers": [ 3, 4 ] } { "Type": "Task", "InputPath": "$.numbers", "ResultPath": "$.sum", "OutputPath": "$[‘title’, ‘sum’]" { "title": "Numbers to add", "sum": 7 } 合計を計算 [ 3, 4 ] 7 データを入力 ASL
  • 25. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データの入出力まとめ State"InputPath" "ResultPath" "OutputPath" Input Output "Parameters"  InputPath や Parameters が未指定の場合、入力のテキストデータがそのまま State に渡される。  InputPath と Parameters が両方指定されていた場合、入力データに InputPath が適用され、適 用後のデータにさらに Parameters が適用される。  ResultPath が未指定の場合、入力のテキストデータは削除され State の実行結果が OutputPath に渡される。  OutputPath が未指定の場合、ResultPath までを加味した結果がそのまま出力になる。  入力および出力は JSON 形式で行うのが一般的。
  • 26. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 本日のアジェンダ     State の記述  
  • 27. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ステートマシン全体の設定 ステートマシンは ASL で定義するが、下記のような フィールドを指定することができる。  Comment : テキストで任意のコメントを入力できる。  StartAt : 一番最初に実行する State を指定する。  TimeoutSeconds : 秒数を指定する。ステートマシン全体 の実行時間がこの秒数を超過するとタイムアウトエラー になり実行が終了する。  Version : ASL のバージョンを指定。既定では 1.0。  States : ステートマシンを構成する State を指定する。複 数含めることが可能。 { "Comment": "A Hello World example of the Amazon States Language using a Pass state", "StartAt": "HelloWorld", "TimeoutSeconds": 600, "Version": "1.0", "States": { "HelloWorld": { "Type": "Pass", "Result": "Hello World!", "End": true } } } https://docs.aws.amazon.com/ja_jp/step- functions/latest/dg/amazon-states- language-state-machine-structure.html
  • 28. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 7 種類の State Type Task 単一の処理を行う Wait 指定した時間の間、処理をストップする Pass 入力をそのまま出力へ渡す Parallel 並列に処理を実行する Choice 一定の条件により分岐する Fail 実行結果を失敗として終了する Succeed 実行結果を成功として終了する
  • 29. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. State Type : Task { "StartAt": "Put Message", "TimeoutSeconds": 3600, "States": { "Put Message": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:putItem", "Parameters": { "TableName": "StepFunctionsSample", "Item": { "MessageId": { "S": "this is a test message" } } }, "End": true } } } 最も基本的な State Type。ステートマシンによって実行され る単一の作業単位を表す。Lambda や DynamoDB といった リソースに対して処理の実行を指示する。 下記のフィールドが存在。  Resource : Lambda や DynamoDB といったサービスに対して実行 する処理を ARN 形式で指定  Parameters : Resource で指定したリソースに渡すパラメータを指 定。Lambda や DynamoDB、SNS などサービスにより内容は異な る。  TimeoutSeconds : 秒数を指定し、実行時間がこの秒数を超えると タイムアウトエラーになる。  HeartbeatSeconds : 秒数を指定し、Activity にのみ適用される。 Activity が Step Functions の SendTaskHeartbeat API を、ここで指 定した秒数以内に定期実行しないと、タイムアウトエラーになる。  ResultPath : State の出力をどのような名称で受け取るか指定。  Retry : エラーのハンドリングに使用 (後述)  Catch : エラーのハンドリングに使用 (後述) https://docs.aws.amazon.com/ja_jp/step- functions/latest/dg/amazon-states-language- task-state.html
  • 30. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. State Type : Wait 指定された時間だけ待機して、次の State に 状態遷移させる場合に利用する State Type。 次のうちいずれかを指定する。  Seconds : 待機する時間を秒単位で指定  Timestamp : ISO8601 形式で、いつまで待機す るかを指定 (例 : 2019-08-18T17:33:00Z)  SecondsPath : State への入力データのうち、待 機する時間 (秒単位) を JsonPath 構文で指定  TimestampPath : State への入力データのうち、 いつまで待機するか、時間を JsonPath 構文で 指定 { "StartAt": "Wait State", "States": { "Wait State": { "Type": "Wait", "Seconds": 20, "Next": "Next State" }, "Next State": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:putItem", "Parameters": { "TableName": "StepFunctionsSample", "Item": { "MessageId": { "S": "this is a test message" } } }, "End": true } } } https://docs.aws.amazon.com/ja_jp/step- functions/latest/dg/amazon-states-language-wait- state.html
  • 31. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. State Type : Pass 何も作業をせずに入力を次の出力に渡す State Type。ステートマシンをデバッグす る際にも利用できる。 次のフィールドを利用できる。  Result : State の実行結果を指定。  ResultPath : Result をどのようなパラメータ名 で受け取るか指定。  Parameters : 前述のとおり、入力されたデータ から「キーと値」の JSON を生成。 { "StartAt": "Show Axis", "States": { "Show Axis": { "Type": "Pass", "Result": { "x-axis": 10, "y-axis": 20 }, "ResultPath": "$.axis", "End": true } } } https://docs.aws.amazon.com/ja_jp /step-functions/latest/dg/amazon- states-language-pass-state.html
  • 32. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. State Type : Parallel 並列に State を実行するときに使用する State Type。並列 実行される State のうち、いずれかが失敗すると、Parallel の State 全体が失敗扱いになる点に注意。  Branches : 配列で、並列に実行する State を指定  ResultPath : Parallel の State の出力をどのようなパラメータで受け 取るか指定。  Retry : Branches 内の State のエラーのハンドリングに使用 (後述)  Catch : Branches 内の State のエラーのハンドリングに使用 (後述) { "Comment": "Parallel Example.", "StartAt": "LookupCustomerInfo", "States": { "LookupCustomerInfo": { "Type": "Parallel", "End": true, "Branches": [{ "StartAt": "LookupAddress", "States": { "LookupAddress": { "Type": "Task", "Resource": "(..省略..)", "End": true } } }, { "StartAt": "LookupPhone", "States": { "LookupPhone": { "Type": "Task", "Resource": "(..省略..)", "End": true } } }] } } } Parallel の State の出力は配列形式で生成される。 たとえば、入力が [3, 2] に対して、加算の State と減算の State を 並列に実行した場合、出力は [5, 1] といった結果が得られる。 https://docs.aws.amazon.com/ja_jp/step- functions/latest/dg/amazon-states-language-parallel- state.html
  • 33. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. State Type : Choice 条件分岐のロジックを記載するときに使用する State Type。  Default : どの条件にも合致しなかったときに実行する State を指定  Choices : 配列形式で条件分岐の内容を指定する  Variable : State への入力のうち指定したフィールドを条件分岐に利用す る  Next : 条件に合致したときに遷移する State を指定  NumericEquals : Variable に対する比較演算子と、比較する値を指定。 その他にも以下の比較演算子が利用可能。 { "StartAt": "Choice State", "States": { "Choice State": { "Type" : "Choice", "Choices": [ { "Variable": "$.choice", "NumericEquals": 1, "Next": "Succeed State" } ], "Default": "Fail State" }, "Succeed State": { "Type" : "Succeed" }, "Fail State": { "Type": "Fail", "Error": "DefaultStateError", "Cause": "No Matches!" } } } •And •BooleanEquals •Not •NumericEquals •NumericGreaterThan •NumericGreaterThanEquals •NumericLessThan •NumericLessThanEquals •Or •StringEquals •StringGreaterThan •StringGreaterThanEquals •StringLessThan •StringLessThanEquals •TimestampEquals •TimestampGreaterThan •TimestampGreaterThanEquals •TimestampLessThan •TimestampLessThanEquals https://docs.aws.amazon.com/ja_jp/step- functions/latest/dg/amazon-states-language-choice-state.html
  • 34. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. State Type : Succeed ステートマシン実行を正常停止させる State Type。 主に Choice State Type の遷移先に使われる。 特に追加のフィールドはなく、停止させるための State Type であるため、Next や End フィールドは不 要。 { "StartAt": "Choice State", "States": { "Choice State": { "Type" : "Choice", "Choices": [ { "Variable": "$.choice", "NumericEquals": 1, "Next": "Succeed State" } ], "Default": "Fail State" }, "Succeed State": { "Type" : "Succeed" }, "Fail State": { "Type": "Fail", "Error": "DefaultStateError", "Cause": "No Matches!" } } } https://docs.aws.amazon.com/ja_jp/step- functions/latest/dg/amazon-states-language-succeed- state.html
  • 35. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. State Type : Fail ステートマシン実行を失敗としてマークさせる State Type。停止させるための State Type であるため、 Next や End フィールドは不要。 次のフィールドを使用できる。 { "StartAt": "Choice State", "States": { "Choice State": { "Type" : "Choice", "Choices": [ { "Variable": "$.choice", "NumericEquals": 1, "Next": "Succeed State" } ], "Default": "Fail State" }, "Succeed State": { "Type" : "Succeed" }, "Fail State": { "Type": "Fail", "Error": "DefaultStateError", "Cause": "No Matches!" } } }  Error : エラー名を指定。Retry や例外の Catch に使 用できる。  Cause : エラーの理由を文字列で指定 https://docs.aws.amazon.com/ja_jp/step- functions/latest/dg/amazon-states-language-fail-state.html
  • 36. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. State の Retry State Type が Task もしくは Parallel の場合、Retry というフィールドを定義できる。State でエラーが発 生した際に再試行させる際に利用する。  ErrorEquals : リトライの対象とするエラーを指定 (後述)  IntervalSeconds : 最初のリトライまでの秒数。  BackoffRate : リトライ間隔を増加させる乗数。左記の設定 の場合、1 回目のリトライは 3 秒後に行われ、再び失敗す る。2 回目のリトライは、1 回目のリトライからさらに 3 x 2.0 = 6 秒後に行われる。3 回目のリトライは、2 回目のリ トライから 3 x 2.0 x 2.0 = 12 秒後、4 回目のリトライは、 3 回目のリトライから 3 x 2.0 x 2.0 x 2.0 = 24 秒後に行わ れる。  MaxAttempts : リトライを行う回数。ここで指定した回数リ トライが失敗すると、State の実行が失敗となる。 { "StartAt": "Parallel", "States": { "Parallel": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "FailState", "States": { "FailState": { "Type": "Fail" } } } ], "Retry": [ { "ErrorEquals": ["States.ALL"], "IntervalSeconds": 3, "BackoffRate": 2.0, "MaxAttempts": 4 } ] } } }
  • 37. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. State のエラー処理 (Catch) State Type が Task もしくは Parallel の場合、Catch というフィールドを定義できる。  ErrorEquals : エラーの条件を指定。  Next : エラー条件に該当した際に遷移させる State を指定。  ResultPath : エラーの内容を出力に含める際に指定する。左記 の場合、以下のような出力が得られる。 { "StartAt": "Parallel", "States": { "Parallel": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "FailState", "States": { "FailState": { "Type": "Fail", "Error": "An Error Occurred", "Cause": "Unknown" } } } ], "Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "Fallback", "ResultPath": "$.error" }] }, "Fallback": { "Type": "Pass", "End": true } } }
  • 38. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ErrorEquals によるエラー判定 Retry や Catch フィールドでは、どのようなエラーのときに条件に合致したと みなすか、ErrorEquals フィールドで指定する  States.ALL : すべてのエラーに合致する  States.Timeout : State がタイムアウトした際に合致す る  States.TaskFailed : State 実行に失敗した際に合致する  States.Permissions : State 実行の権限が無かった際に 合致する { "StartAt": "Parallel", "States": { "Parallel": { "Type": "Parallel", "End": true, ..(省略).. "Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "Fallback", "ResultPath": "$.error" }] }, "Fallback": { "Type": "Pass", "End": true } } }
  • 39. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ErrorEquals によるエラー判定 (独自実装の例外) State から Lambda 関数を実行する場合、関数で実装した例外を条件とすることも可能 { "StartAt": "CreateAccount", "States": { "CreateAccount": { "Type": "Task", "Resource": "...(省略)...", "Next": "NextState", "Catch": [{ "ErrorEquals": ["AccountAlreadyExistsException"], "Next": "FallbackState" }] }, ...(省略)... } } Python Java AccountAlreadyExistsException の 例外が発生した場合を捕捉 (Catch) その他、C# や Node.js など、例外の表現については、言語ご との Lambda 関数の記述方式に従う。
  • 40. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 本日のアジェンダ      実行状況の確認 
  • 41. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 実行の状況の確認と中断 ステートマシンの実行には任意の名称を付与することができる 実行ごとに状況の確認や、途中で中断させることができる 進行中の State は水色で表示される この実行の名称 実行の途中停止
  • 42. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ステートマシンの実行結果 State ごとにどのような実行結果であったのか、および全体の実行履歴を確認す ることが可能。 緑色になった State は、 実行され成功したものを表す
  • 43. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ステートマシンの実行通知 ステートマシンの実行ステータスが変化した際に、CloudWatch Events に対して イベントを発行することができる サービス名 : Step Functions イベントタイプ : Step Functions Execution Status Change を選択。 その他に、タイムアウトなど、どのステータスのときにイベントを 発行するか、またどのステートマシンを対象にするかを選択できる。
  • 44. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. パフォーマンスの監視 Amazon CloudWatch より以下の 7 種類のメトリクスが監視できる 定義したステートマシンごとに確認することが可能 ExecutionTime 実行の開始時点から終了時点までの間隔 (ミリ秒単位)。 ExecutionThrottled 制限 (後述) に該当しスロットリングされた実行の数。 ExecutionsAborted 中断された実行の数。 ExecutionsFailed 失敗した実行の数。 ExecutionsStarted 開始された実行の数。 ExecutionsSucceeded 正常に完了した実行の数。 ExecutionsTimedOut タイムアウトした実行の数。 https://docs.aws.amazon.com/ja_jp/step- functions/latest/dg/procedure-cw-metrics.html
  • 45. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 本日のアジェンダ       補足や料金詳細など
  • 46. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Step Functions が利用可能なリージョン AWS Step Functions は 21 のリージョン全てでご利用可能 (2019/05/22現在、大阪ローカルリージョンを除く) Sydney Tokyo Beijing Seoul Ningxia Hong Kong Singapore Mumbai Sweden Ireland London Frankfurt Paris São Paulo Montreal AWS GovCloud East N.Virginia Ohio AWS GovCloud West Oregon N. California
  • 47. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 料金 (2019/05/22 時点) (例) 1 ヶ月の状態遷移の合計数: 3 回の状態遷移 x 10 万回の実行 = 30 万回の状態遷移 1 ヶ月の料金: (300,000 – 4,000 回の無料枠) x 状態遷移 1 回あたり 0.000025 USD = 7.40 USD 状態遷移=4回 ・Select image converter ・RAW to Tiff ・Load in Database ・End 状態遷移=3回 ・Select image converter ・Unsupported Image Type ・End • 状態遷移 1,000 回あたり $0.025 (Tokyo Region) • 状態遷移 1 回あたり $0.000025 • 毎月 4,000 回までの状態遷移は無料 • 価格はリージョンごとに異なる • リトライは追加の状態遷移として計算
  • 48. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Step Functions の主な制限  SLA : 99.9 %  ステートマシンの最大数 : 10,000 (1 アカウントあたり)  Activity の最大数 : 10,000 (1 アカウントあたり)  最大リクエストサイズ : 1 MB (1 API リクエストあたり)  API リクエストに含めることが可能な合計データのサイズ  ステートマシンの最大実行時間 : 1 年 (1 実行あたり)  ステートマシンの実行履歴の最大サイズ : 25,000 イベント (1 実行あたり)  実行履歴の上限に達するとステートマシンの実行は失敗する。  State への入出力の最大データサイズ : 32,768 文字  State 遷移の合計数 : 1 アカウント・1 リージョン内のすべてのステートマシンに対して State 遷移 の合計数が計算され、トークンバケットアルゴリズム (後述) にもとづいた下記の制限が適用される。  バケットサイズ : 800 (Tokyo リージョンの場合)  1 秒ごとの補充レート : 400 (Tokyo リージョンの場合) https://docs.aws.amazon.com/ja_jp/step -functions/latest/dg/limits.html
  • 49. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. スロットリング - トークンバケットアルゴリズム 一部のスロットリングはトークンバケットアルゴリズムに基づく 「レート」と「バースト」の2つの設定値に従って行われる バケット 「レート」=トークンの補充スピード = 「バケットに追加されるトークン数/秒」 (アカウントレベルの初期値 … 400 /秒) ステートマシンで State 遷移が発生 1つの State 遷移は 1つのトークンを消費 「バースト(バースト上限)」= バケット内のトークンの初期値 兼 バケット最大サイズ (アカウントレベルの初期値 … 800) トークン → トークンを使い果たすと State 遷移が制 限 (スロットリング) され失敗する
  • 50. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Step Functions Local • 開発者のローカル環境でテストするためのツールで、ローカル環境に Step Functions のテスト用ランタイムが起動す る。 • JAR パッケージもしくは Docker コンテナとして利用可能で、AWS SAM Local といったその他のローカル環境向けテ ストツールとも連携できる。 • AWS CLI のオプションでエンドポイントを指定できるので、起動した Step Functions Local のサーバーを指定するこ とで、コマンドラインから Step Functions の動作をローカル環境で検証できる。
  • 51. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. その他類似サービスとの使い分け • Amazon Simple Queue Service (SQS) • マネージドなメッセージ キューイングサービス • サービス間のメッセージの管理に、スケーラブルで信頼性が高いキューが必要な場合は SQS • 処理の追跡や、サービス間のメッセージの受け渡しなど、アプリケーション開発に役立つ機 能をマネージドに利用したい場合は Step Functions • Amazon Simple Workflow Service (SWF) • Decider と呼ばれる、プログラミングベースでワークフロー制御を行うサービス • Java もしくは Ruby の AWS Flow Framework と併用するのが一般的 • Step Functions と比較して複雑化するため、新規開発では Step Functions を使うことを推奨https://aws.amazon.com/jp/step-functions/faqs/
  • 52. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ユースケース  データプロセシング : 複数のデータストアを利用する分析や機械学習  e コマース : 在庫追跡や注文処理  動画処理 : サムネイルの生成、ビデオのエンコーディング  バッチ処理 : ゲノム情報解析のような学術領域  ウェブアプリケーション : 複雑なユーザー登録プロセス  管理者承認 : 管理者が承認した場合に限り処理を行う 相互に依存するような複数の処理を組み合わせたい場合に最適 ...etc
  • 53. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. まとめ:AWS Step Functions のメリット アプリケーションを構成 する関数全体を管理する ための余分なコーディン グが不要になる アプリケーションを数分 で構築し、アプリケー ションが意図したとおり に動作するように各ス テップの実行を可視化お よび追跡できる 各ステップの状態を追跡 し、リトライやロール バックによりエラーに対 応できる アプリケーションを すぐに構築可能 コーディング不要 耐久性の向上
  • 54. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS 公式 Webinar https://amzn.to/JPWebinar 過去資料 https://amzn.to/JPArchive ご視聴ありがとうございました