この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部 IoT事業部の若槻です。
今回は、AWS Step Functionsステートマシンでパラメータストアから取得した値をStates.Formatでテンプレートとして使用してみました。
States.Formatとは
Step FunctionsではIntrinsic functionsという組み込み関数を使用できます。
そのうち文字列リテラル中の特定シーケンス({}
)の置き換えをするテンプレートのような利用ができるものがStates.Formatです。
例えば下記のような入力がある場合に、
{
"name": "Arnav",
"template": "Hello, my name is {}."
}
States.Format
を下記のように使用すれば、
States.Format($.template, $.name)
Hello, my name is Arnav.
という出力を得られます。
やってみた
パラメーターストアの作成
AWSマネジメントコンソールでパラメーターストアのページにて、パラメータを作成画面を開き、template
という名前でパラメータを作成します。値はClassmethod is {} company.
とします。
ステートマシンの作成
Step Functions Workflow Studioでステートマシンを作成します。
Step Functionsのマネジメントコンソールでステートマシンの作成を開始します。
[次へ]をクリックします。
[action]をGetParameter
で検索して[System Manager GetParameter]をドラッグして追加します。
[GetParameter]の[設定]で、[APIパラメータ]で下記のJSONを指定します。これによりtemplate
パラメータストアに格納されている値を取得できます。
{
"Name": "template"
}
同じく[GetParameter]の[出力]で、[ResultSelector]と[ResultPath]を指定します。
- ResultSelector
{
"value.$": "$.Parameter.Value"
}
- ResultPath
$.template
次に[フロー]から[GetParameter]の下の位置へ[Pass]をドラッグして追加します。
Passの[入力]-[Parameter]で以下のJSONを指定します。
{
"Result.$": "States.Format($.Parameter.Value,'exciting')"
}
生成されたコードを確認したら[次へ]をクリックします。
今回生成されたコード(ステートマシン定義)は下記のようになります。
{
"Comment": "A description of my state machine",
"StartAt": "GetParameter",
"States": {
"GetParameter": {
"Type": "Task",
"Parameters": {
"Name": "template"
},
"Resource": "arn:aws:states:::aws-sdk:ssm:getParameter",
"ResultSelector": {
"value.$": "$.Parameter.Value"
},
"ResultPath": "$.template",
"Next": "Pass"
},
"Pass": {
"Type": "Pass",
"End": true,
"Parameters": {
"Result.$": "States.Format($.template.value,$.Comment)"
}
}
}
}
[ステートマシンの作成]をクリックして作成を完了します。
ステートマシンを作成できました。不足しているパラメータストアへのアクセス権限を付与するために[IAMでロールを編集]をクリックします。
今回はAWS管理ポリシーのAmazonSSMReadOnlyAccess
をアタッチしました。(ポリシーは必要に応じて用意してください)
動作
Step Functionsのコンソールに戻り、入力で下記のようなJSONを指定して、ステートマシンを実行します。
{
"Comment": "technology"
}
実行が成功しました。
指定した値がテンプレート文字列にフォーマットされた結果が取得できています。
{
"Result": "classmethod is technology company."
}
参考
- Intrinsic functions - AWS Step Functions
- [アップデート]Step Functions:動的タイムアウトや組み込み関数などが追加されASLが強化されました | DevelopersIO
以上