- 新しい順
- 投票が多い順
- コメントが多い順
回答
ステートマシンの json より、get command
State の Parameters に以下のように記載が見受けられました。
"Parameters": { "Name": "reqform" },
この場合、getParameter API [1] の Name に reqform
という文字列を渡すこととなります。
この結果、存在しないパラメータ reqform
の値を取得しようとしてエラー(Service returned error code ParameterNotFound
)が発生しているものと見受けられます。
ドキュメント [2] に記載があるとおり、Parameters において State の入力のパスを使用して値を選択する必要がある場合は、キーの名前を .$
で終わらせる必要がございます。
そのため、get command
State の Parameters を以下のように修正することで getParameter API の Name に Pass
State の reqform
の値(すなわち States.Format で作成した値取得用パス /aaa/bbb/{}/ccc
)を渡すことが可能かと存じております。
"Parameters": { "Name.$": "reqform" },
修正したステートマシン全体は以下のようになると存じております。
{ "Comment": "An example of combining workflows using a Step Functions StartExecution task state with various integration patterns.", "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "Next": "get command", "Parameters": { "reqform.$": "States.Format('/aaa/bbb/{}/ccc', $.hoge)" } }, "get command": { "Type": "Task", "Parameters": { "Name.$": "reqform" }, "Resource": "arn:aws:states:::aws-sdk:ssm:getParameter", "End": true } } }
参考資料
[1] GetParameter - AWS Systems Manager - https://docs.aws.amazon.com/ja_jp/systems-manager/latest/APIReference/API_GetParameter.html
[2] パラメータ | InputPath、パラメータ、 ResultSelector - AWS Step Functions - https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/input-output-inputpath-params.html#input-output-parameters
それぞれの値は、ステートマシンの定義に含める静的な値、または入力からパスまたはコンテキストオブジェクトで選択した静的な値を使用できます。パスを使用して値を選択するキーと値のペアの場合、キーの名前は .$ で終わる必要があります。
関連するコンテンツ
- AWS公式更新しました 3年前
ご教示頂いたJSON内容「"Name.$": "reqform"」ですと、残念ながらエラー「The value for the field must be a valid JSONPath or intrinsic function expression.」になってしまいました。 再度参考資料で頂いた各種情報を基に、次の通り修正し期待動作結果を得ることが確認できました。
この度はご助力有難うございました。
修正案に誤りが含まれており、大変失礼いたしました。
「
"Name.$": "reqform"
」にて設定しようとすると、Yamada 様にてご確認いただいたとおりエラー(The value for the field must be a valid JSONPath or intrinsic function expression.
)が発生します。 Yamada 様のご認識のとおり、正しくは以下のとおり記載することで States.Format で作成した値取得用パス/aaa/bbb/{}/ccc
を API に渡すことが可能かと存じております。 (手元では「"Name.$": "$.reqform"
」にて動作確認を行ったのですが回答を記載する際に誤ってしまいました。)期待通りの動作を得ることができたとのことで、何よりでございます。 ご指摘および解決方法をご教示くださり、ありがとうございました。