ENGINEER BLOG ENGINEER BLOG
  • 公開日
  • 最終更新日

Step Functionsで始めるAWSリソース操作入門(条件分岐編)

この記事を共有する

目次

はじめに

こんにちは!パーソル&サーバーワークスの野間です。

前回のブログでは AWS Step Functions(以下、Step Functions)を利用して   AWS リソースの簡単な操作を行うワークフローを作成しました。
今回は Step Functions を使って条件分岐を行うワークフローを作成したいと思います。

作成するワークフローの概要

今回は以下のようなワークフローを作成したいと思います。

  1. 特定の EC2 インスタンスを起動
  2. EC2 インスタンスのステータスが「running(実行中)」になっているか確認
  3. [ 条件分岐 ] まだ起動していない場合は一定時間待機、「running」であればワークフローを完了

作成してみる

  1. Step Functions のコンソール画面から [ステートマシンの作成] を選択します。
  2. ステートマシン名を入力して、 [続行] を押下します。
  3. 検索画面に「StartInstances」と入力して、ワークフロー画面にドラッグアンドドロップします。 create-stepfunctions-08.png
  4. API パラメータに以下の内容を入力します。(実行時にインスタンスIDを変数として渡すことができます)

    { "InstanceIds.$": "$.InstanceId" }

  5. 「入力/出力」タブに移動して、ResultPathに「$.StartResult」を指定します。(変数の内容を次のステップに渡す際に利用します) create-stepfunctions-10.png
  6. 検索欄に「DescribeInstances」を入力して、ワークフロー画面にドラッグアンドドロップします。 create-stepfunctions-11.png
  7. API パラメータに以下の内容を入力します。(先程と同じ内容) { "InstanceIds.$": "$.InstanceId" }
  8. 「入力/出力」タブに移動して、ResultPathに「$.DescribeResult」を指定します。(DescribeInstancesの実行結果を次のステップに渡す際に利用します) create-stepfunctions-12.png

ここまでで、EC2 インスタンスを起動してステータスを確認する部分が完成しました。
次に EC2 インスタンスの起動状態に合わせて分岐するワークフローを作成します。

  1. 検索欄に「Choice」を入力して、ワークフロー画面にドラッグアンドドロップします。 create-stepfunctions-13.png
  2. Choice Rules の Rule #1 の [ 条件を追加 ] を押下します。
  3. 以下の内容を入力して、[ 条件を保存 ] を押下します。 EC2 インスタンスのステータスが "running" かどうか判定します。)

    Variable:$.DescribeResult.Reservations[0].Instances[0].State.Name
    Operator:is equal to
    Value:String constant
    値:running
    ※DescribeInstances の実行結果から、EC2 インスタンスの State.Name を参照しています。

  4. 検索欄に「Wait」を入力して、Default 側のワークフローに追加します。(EC2 インスタンスのステータスが"running"ではない場合に実行)
  5. 待機時間は5秒を選びました。EC2 インスタンスの起動時間に合わせて変更してください。
  6. 次の状態に「DescribeInstances」を指定することで、EC2 インスタンスのステータスが変化するまでループする処理にします。 create-stepfunctions-15.png
  7. 検索欄に「成功」を入力して、Default 側ではないワークフローに追加します。 create-stepfunctions-16.png

これで条件分岐を行うワークフローが完成しました!早速実行してみます。

実行してみる

実行時にEC2 インスタンスのIDを指定する必要があるため、以下の内容を入力します。

{ "InstanceId": [ "ここにEC2 インスタンスのIDを入力" ] } create-stepfunctions-17.png それでは [ 実行を開始 ] を押下してステートマシンを実行してみます。

無事に成功して、EC2 インスタンスのステータスが「running」になりました。 create-stepfunctions-18.png
ログを確認してみると、1回目のDescribeInstancesではステータスが「running」ではないためループしていることがわかります。 create-stepfunctions-19.png

待機時間を調整したり、無限ループ防止のため最大試行回数を設定するとより実用性があると感じました!

まとめ

想定していたよりも GUI で簡単に分岐処理を設定することができました。 今後 AWS リソースの操作は AWS Lambda 関数だけでなく Step Functions も利用していきたいと思いました!

これから Step Functions を作成される方の参考になれば幸いです。

この記事は私が書きました

野間 太一

記事一覧

猫とCloudFormationが好きです。

野間 太一

この記事を共有する

クラウドのご相談

CONTACT

クラウド導入や運用でお悩みの方は、お気軽にご相談ください。
専門家がサポートします。

サービス資料ダウンロード

DOWNLOAD

ビジネスをクラウドで加速させる準備はできていますか?
今すぐサービス資料をダウンロードして、詳細をご確認ください。