第119回 雲勉【オンライン】Step Functions を使ってAuto Scaling を制御してみた
View Slide
0.講師⾃⼰紹介2n 岡部 良亮• CIࣄۀ෦ ߏஙୈീηΫγϣϯॴଐ• 2018年9⽉⼊社(MSP⼀次運⽤→MSP⼆次運⽤→構築第⼋セクションに異動)前職︓基盤システムの運⽤監視オペレーター・DCハウジング業務を担当。• 最近、猫を飼いました。
アジェンダ30. ⾃⼰紹介1. AWS Step Functions の概要2. AWS Step Functions を活⽤に⾄った経緯3. AWS Step Functions を利⽤した Auto Scaling の実例4. まとめ
本⽇のゴール4n AWS Step Functions の概要についてご理解いただく。n AWS Step Fucntions の作成・設定についてご理解いただく。
1. AWS Step Functions の概要5
1.AWS Step Functions の概要6n AWS Step FunctionsとはAWS Lambda 等のサービスと統合してビジネスクリティカルなアプリケーションを構築できるサーバーレスオーケストレーションサービスです。AWS Step Functions のグラフィカルコンソールでは、アプリケーションのワークフローを⼀連のイベント駆動型ステップとして確認できます。
1.AWS Step Functions の概要7AWSの各サービスや、AWS CLI アクションをワークフロー形式で可視化して実装することができるため、GUIベースでサービスやアクションの処理を実装できるのが魅⼒的。コード表⽰も可能
1.AWS Step Functions の概要8AWS Step Functions は ステートマシン という単位で構成。AWSサービスや各アクションを ステート と呼ばれるステップをフローで実⾏することで⼀連の処理を実⾏できる。ステートマシンステート
1.AWS Step Functions の概要9ステートには様々な種類があり、それぞれのステートを組み合わせて処理を実現可能。・Task︓何らかの処理を実⾏・Wait︓処理待機・Succeed︓処理の成功判定・Fail︓処理の失敗判定・Choice︓条件の分岐・Parallel︓並列で処理・Map︓Mapステート内で⼀連のワークフロー処理を実⾏
1.AWS Step Functions の概要10・ワークフローの作成Workflow Studioによる、GUIベースでの作成が可能。
2. AWS Step Functionsを活⽤に⾄った経緯11
2. AWS Step Functionsを活⽤に⾄った経緯12そもそもなんでAWS Step Functions を使うの︖普通にAuto Scaling の設定すればよくない︖
13■実装要件お客様環境のオンプレミスサーバーとAWS環境のEC2を利⽤して、ハイブリッドに負荷分散を⾏いたい要望があった。通常時はオンプレミスサーバーをターゲットにするため、Auto Scaling 配下のターゲットグループにIPアドレスでターゲット指定する必要がある。2. AWS Step Functionsを活⽤に⾄った経緯
14■ここで問題が・・・Auto Scaling の仕様で、Auto Scaling Group に属するALB配下のターゲットグループにはインスタンスのターゲットタイプを指定する必要があり、IPアドレスをターゲット指定することができない。さてどうしよう・・・2. AWS Step Functionsを活⽤に⾄った経緯
15AWS Step Functionsを利⽤すれば、Auto Scalingで作成されたインスタンスからIPアドレスを抽出して指定することができるらしい。2. AWS Step Functionsを活⽤に⾄った経緯
16早速やってみましょう2. AWS Step Functionsを活⽤に⾄った経緯
3. AWS Step Functions を利⽤したAuto Scaling の実例17
18■スケールアウト処理フロー3. AWS Step Functions を利⽤した Auto Scaling の実例
19■Step Functions ワークフロー・Task︓DescribeInstancesインスタンス情報を取得(IPアドレス抽出)・Task︓RegisterTargetsターゲットグループへ登録3. AWS Step Functions を利⽤した Auto Scaling の実例
20オートスケール処理の Step Functions、ステートマシン呼び出しの EventBridge を作成する。スケールイン保護 無効化ライフサイクルフックライフサイクル移⾏:インスタンス終了ハートビートタイムアウト:500秒デフォルトの結果:CONTINUE※Auto Scaling構成(ALB、ターゲットグループ、Auto Scaling Group 等)、IAM周りEventBridge の詳細⼿順については今回は割愛。3. AWS Step Functions を利⽤した Auto Scaling の実例・Auto Scaling Groupの設定
21※補⾜︓ライフサイクルフックAuto Scalingの機能で、EC2のInService移⾏前、Terminated移⾏前に設定することで特定の処理が完全に終了してからステータスを遷移させることが可能。3. AWS Step Functions を利⽤した Auto Scaling の実例
22■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
23■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
24■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
25■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
26インスタンスID抽出のため、APIパラメータを設定■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
27プライベートIPを抽出し、次のタスクにパラメータを渡すため、ResultSelector を設定■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
28■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
29■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
30事前作成済みのターゲットグループに前段で抽出したIPアドレスのEC2を指定してターゲット登録■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
31■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
32■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
33■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
34■EventBridge 作成(※詳細⼿順は割愛)イベントパターン︓Auto Scaling 配下のEC2起動成功をトリガーとするターゲット︓先程作成したステートマシンを指定3. AWS Step Functions を利⽤した Auto Scaling の実例
35実際にスケールアウトしてみる3. AWS Step Functions を利⽤した Auto Scaling の実例
36
37■スケールイン処理フロー3. AWS Step Functions を利⽤した Auto Scaling の実例
38・Task︓DescribeInstancesインスタンス情報を取得(IPアドレス抽出)・Task︓DeregisterTargetsターゲット登録解除・Wait360秒の待機処理・Task︓CompleteLifecycleActionライフサイクルフックの完了処理■Step Functions ワークフロー3. AWS Step Functions を利⽤した Auto Scaling の実例
39■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
40■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
41■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
42インスタンスID抽出のため、APIパラメータを設定■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
43プライベートIP、インスタンスIDを抽出して次のタスクにパラメータを渡すため、ResultSelectorを設定■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
44■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
45■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
46■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
47プライベートIP、インスタンスIDを抽出して次のタスクにパラメータを渡すため、ResultPathを設定■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
48■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
49■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
50ターゲットグループの登録解除遅延まで待機処理(360秒)を挟む■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
51■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
52■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
53ライフサイクルフック、Auto Scaling Groupを指定■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
54■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
55■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
56■Step Functions 作成3. AWS Step Functions を利⽤した Auto Scaling の実例
57■EventBridge 作成(※詳細⼿順は割愛)イベントパターン︓Auto Scaling 配下のEC2終了ライフサイクルアクションをトリガーとするターゲット︓先程作成したステートマシンを指定3. AWS Step Functions を利⽤した Auto Scaling の実例
3. AWS Step Functions を利⽤した Auto Scaling の実例58実際にスケールインしてみる
59
604.まとめ・グラフィカルにワークフローを設定することが可能・コードが苦⼿な⽅でも直感的に設定ができる。・Lambda 等の他のサービスも組み合わせることで様々な使い⽅ができる。
61ご清聴ありがとうございました