Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

AWS Step Functionsについてまとめています。

AWS Step Functionsは、サーバレス向けサービスをワークフローとして連携させるサービス

AWS Step Functionsは、AWS Lamda、Dynamo、SNS、SQSなどのサーバレス系サービスをワークフローとして連携させるためのサービスです。ASL(Amazon State Language)という言語でワークフローを記述します。記述したワークフローは、「ビジュアルワークフロー」として可視化されます。

【関連記事】
AWS Lambdaとは、サーバレスでコード実行可能なコンピューティングサービス

AWSのサーバレス系サービスで、バッチ処理が記述できるんですね。

以下のASLを記述すると、上記がビジュアルフローとして表示されます。

関連)AWS Step Functions でサーバーレスワークフローを作成する | AWS

{
  "Comment": "A simple AWS Step Functions state machine that automates a call center support session.",
  "StartAt": "Open Case",
  "States": {
    "Open Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Next": "Assign Case"
    }, 
    "Assign Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Next": "Work on Case"
    },
    "Work on Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Next": "Is Case Resolved"
    },
    "Is Case Resolved": {
        "Type" : "Choice",
        "Choices": [ 
          {
            "Variable": "$.Status",
            "NumericEquals": 1,
            "Next": "Close Case"
          },
          {
            "Variable": "$.Status",
            "NumericEquals": 0,
            "Next": "Escalate Case"
          }
      ]
    },
     "Close Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "End": true
    },
    "Escalate Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Next": "Fail"
    },
    "Fail": {
      "Type": "Fail",
      "Cause": "Engage Tier 2 Support."    }   
  }
}

AWS Step Functionの使い方

AWSのマネジメントコンソールの検索窓にて「Step」と入力し、「Step Functions」をクリックします。

【関連記事】
AWSを集中管理したい!AWS マネジメントコンソールを使いこなそう!

AWS Step Functionsの解説ページが表示されます。「今すぐ始める」ボタンをクリックします。

「Hello World」サンプルのコードと、コードをビジュアル化したワークフロー(ステートマシン)が表示されます。「次へ」をクリックします。

このサンプルでは、特にAWSのサービスを実行せず、次のステートに出力値を渡していくだけのシンプルなコードになっています。

「詳細を指定」の画面になります。ステートマシンの名前、アクセス許可、ログ記録、タグの設定を指定できます。

ここでは、特に設定を変えずに下にスクロールさせて「ステートマシンの作成」をクリックします。

「実行の開始」画面にて、入力値を指定できます。ここでは、初期値のまま実行の開始をクリックします。

 

「グラフインスペクター」として、ヴィジュアル化されたステートマシンが表示されます。各ノードをクリックすると、処理のステータス、入力値、出力値が確認できます。

ASLはJSON形式で、「キー:値」という表記でワークフローを記述していきます。「ステート名:{~}」を使って、ワークフローのノード(ステート)の記述をおこないます。また、”Comment”で始まる行はコメントを記述するという暗黙の了解があるようですね。

各ステートのTypeには「Task」「Choice」「Pass」「Wait」「Parallel」「Fail」「Succeed」「Map」などの処理タイプを記述します。

関連)States – AWS Step Functions

作成したステートマシンは、Step Functionsの最初のページにて「ステートマシン」をクリックすることで一覧表示画面に移動できます。

ステートマシン一覧画面では、作成済みのステートマシンの編集や削除、ステートマシンの新規作成が可能です。ステートマシンを新しく作るには「ステートマシの作成」をクリックします。

ステートマシンの作成方法には3つあります。GUI画面でドラッグドロップ操作でコードを生成していく「ワークフローを視覚的に設計」、入力したコードからワークフローを生成する「コードでワークフローを記述」、サンプルコードとワークフローを確認、実行できる「サンプルプロジェクトを実行」です。

ここでは、「ワークフローを視覚的に設計」を選択して「次へ」をクリックします。

ワークフローを視覚的に設計する画面が表示されます。ドラッグ&ドロップ操作でワークフローの設計が可能です。

ウェブ上で公開されているコードからステートマシンを生成するには「コードでワークフローを記述」が便利です。画面左でコードを編集すると、自動的に右のステートマシンに変更が反映されます。

各ステートの名前を日本語に書き換えても、問題なく実行できました。

{
  "Comment": "A Hello World example of the Amazon States Language using Pass states",
  "StartAt": "ハロー",
  "States": {
    "ハロー": {
      "Type": "Pass",
      "Result": "hello",
      "Next": "ワールド"
    },
    "ワールド": {
      "Type": "Pass",
      "Result": "World",
      "End": true
    }
  }
}

ステートマシンの実行画面でも、特に問題なく日本語が表示されていました。

ただし、ウェブを見てもStep Functionsはそれほど使い込まれていない印象のため、予期せぬ誤動作を避けるため、本番運用するような環境ではステート名はアルファベットのみにしておいたほうが良いでしょう。

AWS Step Functionsのまとめ

ポテパンダの一言メモ
  • AWSのStep Functionsは、AWSのサーバレス系サービスのワークフロー(ステートマシン)を視覚的に作成できる
  • ドラッグ&ドロップで視覚的に設計するか、コードからステートマシンを生成可能
  • ステート名に日本語が使用できるが、本番運用で使うには十分なテストが必要

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。