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

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

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

    View Slide

  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

    View Slide

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

    View Slide

  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/

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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 はこちら

    View Slide

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

    View Slide

  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/

    View Slide

  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"}

    View Slide

  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%

    View Slide

  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統合を利用
    コスト削減、実行時間削減を目指したローコードアーキテクチャへ!

    View Slide

  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

    View Slide