Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS Step Functions の組み込み関数の世界観 / AWS Step Func...

kensh
October 10, 2022

AWS Step Functions の組み込み関数の世界観 / AWS Step Functions Intrinsic functions

Step Functions における Intrinsic functions の世界観
2022年8月に大幅に拡張された Step Functions の Intrinsic functions について使い勝手を見てみよう!

kensh

October 10, 2022
Tweet

More Decks by kensh

Other Decks in Technology

Transcript

  1. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. AWS Step Functions における Intrinsic functions (組み込み関数) の世界観 J A W S D A Y S 2 0 2 2 / エ キ ス パ ー ト 怒 濤 の L T チ ャ レ ン ジ Kensuke Shimokawa Snr. Serverless Specialist Amazon Web Services Japan
  2. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. About Me… Kensuke Shimokawa Amazon Web Services Japan Snr. Serverless Specialist
  3. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. AWS Step Functions とは ? 3
  4. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. AWS Step Functions とは ? • ステートマシーン • 分散型アプリケーションの構築 • ビジネス プロセスの自動化 • オーケストレーションを最小限の コードで実装可能 • ビジュアルでワークフロー構築 4 https://aws.amazon.com/jp/blogs/aws/new-aws-step-functions- workflow-studio-a-low-code-visual-tool-for-building-state-machines/
  5. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. State の種類 5 Choice 処理の分岐 Parallel 並列実行 Pass 入力を次の出力にパススルー Wait 指定された時間待機 Success 成功で実行を終了 Fail 失敗で実行を終了 Map 配列要素の反復処理 Task 処理の実行
  6. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. AWS SDK 統合のサポート 6 17 services, 46 API actions それ以外は、、、 200+ services, 10,000+ API actions AWS SDK AWS Lambda AWS Step Functions AWS Step Functions AWS Step Functions Before After
  7. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. intrinsic functions (組み込み関数) 7
  8. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. intrinsic functions (組み込み関数) とは? Step Functions での組み込み関数は、プログラミング言語の関数に 似たもので、組み込み関数を使用すると、 8 データ操作のための AWS Lambda などの Compute の使用を 削減することが可能 状態の数、遷移の数、およびステートマシーンの実行時間を 削減し、ワークフローの実行コストを削減
  9. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. intrinsic functions (組み込み関数) ArrayContains IN { "in":[1,2,4,5,6,9], "looking": 5 } {"exists.$": "States.ArrayContains( $.in, $.looking)"} OUT {"exists": true} UUID IN { "uuid.$": "States.UUID()" } OUT { "uuid": "ca4c1140- dcc1-40cd-ad05- 7b4aa23df4a8" } Hash IN { "Data": "input data", "Algorithm": "SHA-1" } {"output.$": "States.Hash($.Data,$. Algorithm)”} OUT {"output":"aaff4a450a 104cd177d28d18d74 85e8cae074b7" } MathRandom IN { "start": 1, "end": 999 } {"random.$": "States.MathRandom( $.start, $.end)”} OUT {"random": 456 } 9
  10. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. intrinsic functions (組み込み関数) ArrayPartition IN { "inputArray": [1,2,3,4,5,6,7,8,9] } {"inputArray.$": "States.ArrayPartition( $.inputArray,4)”} OUT {"inputArray": [ [1,2,3,4], [5,6,7,8], [9]] } JsonMerge IN { "json1": { "a": {"a1": 1, "a2": 2}, "b": 2, }, "json2": { "a": {"a3": 1, "a4": 2}, "c": 3 } } {"output.$": "States.JsonMerge($.json1, $.json2, false) "} OUT {"output": { "a": {"a3": 1, "a4": 2}, "b": 2, "c": 3 } } MathAdd IN { "value1": 111, "step": -1 } {"value1.$": "States.MathAdd( $.value1, $.step)"} OUT {"value1": 110 } 10
  11. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. 実は、もっともっとあります。 11 https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-intrinsic-functions.html Pass Task Parallel Map Parameters ✓ ✓ ✓ ✓ ResultSelector ✓ 利用可能なStatesはこちら • Intrinsics for arrays • Intrinsics for JSON data manipulation • Intrinsics for data encoding and decoding • Intrinsics for math operations • Intrinsic for string operations • Intrinsic for unique identifier generation 他の Intrinsics functions はこちら
  12. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. intrinsic functions 実用例 12
  13. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. とあるオンラインCafeメニューのオーダーサニタイズ 13 この Lambda 関数には、 オーダー をメニューに 引き当てるまでの、18 行のコードが書かれている 仕様:オーダーされたドリンクが、メニューマスタに存在するか? Before https://aws.amazon.com/jp/blogs/compute/introduci ng-new-intrinsic-functions-for-aws-step-functions/
  14. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. ArrayContains を使ったリファクタリング 14 メニューマスタ引き当て部分を 組み込み関数化 States.ArrayContains($, $.order) => true / false Menu Item 整形 After exists ? Menu [ { "item": "tea" }, { "item": "coffee" }, { "item": "milk" } ] order: {"item": "tea"}
  15. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. コスト削減 & 実行時間改善 15 1000回 Express Workflow ステートマシンを実行した平均で比較 0 50 100 150 200 250 with Lambda function with Intrinsic function Express Workflow Average duration in 1000 times duration(ms) billed duration(ms) 課金時間が 半減 実行時間が 30%
  16. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. 16 Key Take away AWS Step Functions における Intrinsic functions (組み込み関数) の世界観、納得いただけましたか? • Lambda 関数から、組み込み関数へ • 高機能、カスタムなら Lambda 関数 • 単純なデータ操作なら組み込み関数 • サービスの呼び出しは SDK統合を利用 コスト削減、実行時間削減を目指したローコードアーキテクチャへ!
  17. JAWS DAYS 2022 © 2022, Amazon Web Services, Inc. or

    its affiliates. Thank you! © 2022, Amazon Web Services, Inc. or its affiliates. Kensuke Shimokawa Snr. Serverless Specialist