はじめに
本記事では、AWS StepFunctionsでオプション引数の機能を実現する方法をまとめました。
negocia株式会社について
negocia株式会社では3つのValueを行動指針とし、「うれしい広告」の実現を目指しています。
Value
- Professional Pride プロであり続ける
- Praise the Challenge 挑戦を楽しむ
- Ownership for All 全てにオーナシップをもつ
興味を持たれた方は採用情報をご覧ください。
やりたいこと
このPythonコードのように、AWS StepFunctionsでオプション引数を使いたい。
>>> def say_hello(name="World"):
... return f"Hello, {name}"
...
>>> say_hello()
'Hello, World'
>>> say_hello("negocia")
'Hello, negocia'
手段
StepFunctionsのChoiceとPassを使う。
Choice
で引数の有無を調べ、Pass
でデフォルト値を補う。
StepFunctions の定義
{
"StartAt": "HasName",
"States": {
"HasName": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.name",
"IsPresent": false,
"Next": "FillName"
}
],
"Default": "Say"
},
"FillName": {
"Type": "Pass",
"Result": "World",
"ResultPath": "$.name",
"Next": "Say"
},
"Say": {
"Type": "Pass",
"Parameters": {
"message.$": "States.Format('Hello, {}', $.name)"
},
"OutputPath": "$.message",
"End": true
}
}
}
実行例
引数を与えなかった場合
- 入力
{}
- 出力
"Hello, World"
引数を与えた場合
- 入力
{"name": "negocia"}
- 出力
"Hello, negocia"