0
0

Step Functionsでフィールド名にスペースが入っている場合の表記

Posted at

はじめに

AWS Step Functionsを使っている時に、フィールド名にスペースが入っていて困ったので、その際の対応方法を記事にしました。

概要

入力のサブセットにアクセスするパスの表記は以下の2つがあります。

  • ドット (.) を使う方法
    • $.abc.def
    • フィールド名にスペースがある場合はうまく動きません
  • 角括弧 ([ ]) を使う方法
    • $['abc']['def']
    • フィールド名にスペースがある場合は、こちらが使えます

参考

やってみた

入力イベント

ステートマシンの入力に、スケールアウト成功のイベントを使います。

{
  "version": "0",
  "id": "12345678-1234-1234-1234-123456789012",
  "detail-type": "EC2 Instance Launch Successful",
  "source": "aws.autoscaling",
  "account": "123456789012",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-west-2",
  "resources": [
    "auto-scaling-group-arn",
    "instance-arn"
  ],
  "detail": {
    "StatusCode": "InProgress",
    "Description": "Launching a new EC2 instance: i-12345678",
    "AutoScalingGroupName": "my-asg",
    "ActivityId": "87654321-4321-4321-4321-210987654321",
    "Details": {
      "Availability Zone": "us-west-2b",
      "Subnet ID": "subnet-12345678"
    },
    "RequestId": "12345678-1234-1234-1234-123456789012",
    "StatusMessage": "",
    "EndTime": "yyyy-mm-ddThh:mm:ssZ",
    "EC2InstanceId": "i-1234567890abcdef0",
    "StartTime": "yyyy-mm-ddThh:mm:ssZ",
    "Cause": "description-text",
    "Origin": "EC2",
    "Destination": "AutoScalingGroup"
  }
}

ここから、Availability Zoneを抽出します。

フロー

フローは単純にPassだけ定義します。

image.png

ドットを使う方法で記述

OutputPathにドットを使う方法で、$.detail.Details.Availability Zoneと記述してみます。

image.png

保存はできるのですが、実行すると失敗します。

An error occurred while executing the state 'Pass' (entered at the event id #2). Invalid path '$.detail.Details.Availability Zone' : com.jayway.jsonpath.InvalidPathException: Space not allowed in path

角括弧を使う方法で記述

OutputPathに角括弧を使う方法で、$['detail']['Details']['Availability Zone']と記述してみます。
image.png

出力に、欲しい値が取れました。
image.png

両方を使って記述

ドットと角括弧を両方とも使うこともできるようで、$.detail.Details.['Availability Zone']と記述してみました。
image.png

これでも、ちゃんと抽出できました。
image.png

おわりに

AWS Step Functionsの記述方法 Amazon States Language で、スペースが入っている場合に使える記法を記事にしました。
公式を読んでいればわかる内容ですが、私のように知らないでしばらく途方に暮れる方もいるかと思い書いてみました。

この記事がどなたかのお役に立てれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0