131 Views
December 20, 24
スライド概要
2024/12/16 AWS初心者L㼀会 in 札幌
パワーアップした Step Functionsすごいぞ! 2024/12/16 AWS初心者LT会 in 札幌
目次 1. 自己紹介 2. Step Functionsとは? 3. 直近のアップデート 4. 早速作ってみた。 5. 料金・クオータ・SLA 6. まとめ
1 自己紹介
自己紹介 もりやま 所属:ウェルネット株式会社 役割:PMもどき、Backend AWS歴:約1年半、LT3回目 属性:#ゲーム音楽 #筋トレ #早起き
1 Step Functionsとは
サーバレスオーケストレーター ● 各種サービスをまとめて、一つのサービスを作るステートマシンを提供。 ● GUIで視覚的にワークフローを構築可能 ● 自動でコード化もされる=IaC化可能
2 直近のアップデート
2024/11/22 Step Functionsは変数とJSONata変換で開発者の経験を簡素化します!
①Variables(変数) 🟩Before ステップ間のデータの受け渡しが複雑。 (認定試験でも出る) ● ● InputPath,OutputPath,ResultPath Parameters 🟩After Variables(変数)は、「ステップ間」を意識しない。 ● 256Kibが最大長。 https://docs.aws.amazon.com/step-functions/latest/dg/workflow-variables.html
プログラム変数みたいな利用ができる!
②JSONata ● ● ● JSONデータを操作するために設計された軽量な言語 JSONPathと比較し、合算・変換等、複雑な操作が可能 ワークフロー作成時に選択する
オーケストレーションの為のLambdaが不要に!
2 早速作ってみた。
AWS利用料通知サービス 🟩背景 ● 私もリソース削除漏れの高額請求をやらかした。 ● AWS Budgetsの設定はもちろん、日々のコストも把握したい。 https://docs.aws.amazon.com/step-functions/latest/dg/workflow-variables.html
AWS利用料通知サービス 🟩要件 ● CostExplorerにコスト反映後、日別コストをSlackに通知 ○ 24時間後には反映されるらしい。 ● 通知内容は日々の合計をタイトルに、サービス別詳細を本文に表示 ● Step Functionsを利用し、極力サーバレス、ローコードで作成 https://docs.aws.amazon.com/step-functions/latest/dg/workflow-variables.html
AWS利用料通知サービス https://docs.aws.amazon.com/step-functions/latest/dg/workflow-variables.html
AWS利用料通知サービス https://docs.aws.amazon.com/step-functions/latest/dg/workflow-variables.html
ワークフロー 1⃣コスト取得対象日決定 ↓ 2⃣GetCostAndUsage APIでコスト取得 ↓ 3⃣アイコン決定(⚠ or‼ ) ↓ 4⃣サービス別要約 ↓ 5⃣SNS経由でSlack通知 ※各サービス呼び出しにはリトライ処理を設定 ※リトライしてもダメな場合はエラー通知
ワークフロー 新機能に関するところだけ、詳細にご紹介。
コスト取得対象日決定
JSONataは{% %}の中に書く。
StartDate: "{% $fromMillis($toMillis($states.context.State.EnteredTime) - 48*60*60*1000,'[Y0001]-[M01]-[D01]') %}"
1⃣実行時間をミリ秒変換
↓
2⃣●日前分のミリ秒を減算
↓
3⃣$fromMillisで再度文字列に変換
(YYYY-MM-DD)
↓
4⃣変数に格納
GetCostAndUsage APIでコスト取得 JSONataは集計も可能。 "Groups": [ { "Keys": [ "AWS Cost Explorer" ], "Metrics": { "UnblendedCost": { "Amount": "0.01", "Unit": "USD" } } }, { "Keys": [ "AWS Key Management Service" ], "Metrics": { "UnblendedCost": { "Amount": "0.010752688", "Unit": "USD" } } 何故かコストも } 文字列型。
GetCostAndUsage APIでコスト取得 $formatNumber($sum($states.result.ResultsByTime.Groups.Metrics.UnblendedCost.Amount~> $map(function($v) {$number($v)})), '0.00')
3 料金・クォータ・SLA
料金 ● ● USD 0.025/1,000 回の状態遷移 ○ 4,000回の無料枠あり 左の例だと5回の遷移。
クォータ(トークンバケットアルゴリズム) リクエスト=状態遷移と考える。 ● ● レート :400 バースト:800 https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/reliability-pillar/rel_mitigate_interaction_failure_throttle_requests.html
可用性 99.9% AWS Step Functions Service Level Agreement https://aws.amazon.com/jp/step-functions/sla/
4 まとめ
変数、JSONataを搭載したStep Functions強い! ✅ より簡単、直感的にワークフローを作れるようになった! ✅ Lambdaレスにより、開発・運用コストが軽減! Step Functions=迅速な開発体験!
Thanks!! ご清聴ありがとうございました!