だいぶニッチな要件ですが、公式ドキュメントに記載を見つけられず試行錯誤したのでメモ。
前提
Step Function では、 Amazon States Language でフローを定義します。
パスは $で始まる文字列 となる JsonPath 構文で記述し、ドット表記とブラケット表記が利用できます。
ドキュメント内の例は殆どドット表記で記載されています。
You can access object fields using only dot (.) and square bracket ([ ]) notation.
json-path/JsonPath: Java JsonPath implementation
JsonPath expressions can use the dot–notation
$.store.book[0].title
or the bracket–notation
$['store']['book'][0]['title']
また、データ処理を行うための組み込み関数がいくつか用意されています。
Intrinsic functions - AWS Step Functions
結論
Parameters では、両表記 "$.detail-type", $['detail-type'] が利用可能です。
Intrinsic functions (組み込み関数) 内でも利用できますが、ハイフンを含む場合は、ブラケット表記 $['detail-type'] のみ利用可能 です。
詳細
例題
AWS の各種 Event に含まれる datail-type を Step Function (StateMachine) で使用します。
"$.detail-type"、$['detail-type'] の二通りの記述方式で、単純参照と組み込み関数の利用を試します。
関数は値を利用して新たな文字列を生成する States.Format を利用します。
成功例
input データから値を抽出する簡単な StateMachine で確認します。
{
"Comment": "hyphen check",
"StartAt": "Pass: Parameter",
"States": {
"Pass: Parameter": {
"Type": "Pass",
"Parameters": {
"detail-type.$": "$.detail-type",
"[detail-type].$": "$['detail-type']"
},
"ResultPath": "$.resultParameter",
"Next": "Pass: Intrinsic function"
},
"Pass: Intrinsic function": {
"Type": "Pass",
"Parameters": {
"detail-type.$": "States.Format('detail-type: {}', $['detail-type'])"
},
"ResultPath": "$.resultIntrinsicFunction",
"End": true
}
}
}

失敗例
抜粋です。 States.Format の $['detail-type'] が $.detail-type になっています。
"detail-type.$": "States.Format('detail-type: {}', $.detail-type)"
書式エラーとなり、保存できません。
There are Amazon States Language errors in your state machine definition. Fix the errors to continue.
