3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Step Functions で States.ReferencePathConflict が起きたときの対処

Posted at

概要

Step Functions の ResultPath を指定したものの、以下エラーが発生することがある。

{
  "error": "States.ReferencePathConflict",
  "cause": "Unable to apply ReferencePath $.someTaskResult to input \"input1\""
}

ここでは someTaskResult という key に結果を出力しようと試みている。

原因

ステップの入力が Object 型ではない可能性がある。
例えば、プリミティブな String が入力された場合、当然ながら someTaskResult という key は設定できない。例えば Map を使う場合、イテレーションの対象として List を使わなければいけないが、List の各値がプリミティブ型だった場合、イテレータに渡る入力としてこのような事態が起こりうる。

対策

前段の出力を加工し、Object 型にしてしまえばよい。具体的には Parameter が使える。上述の Map による問題だった場合も、Map に Parameter が利用できる。イテレータへの入力が Parameter によって加工された値になる。

Mapの例
  "Type": "Map",
  "Parameters": {
    "input1.$": "$$.Map.Item.Value",
      :
  },
  "Iterator": {
    "States": {
      "SomeTask": {
        "ResultPath": "$.someTaskResult",
              :

上記のようにすると、 { "input1": "~~~" } という入力になるので、 SomeTask の出力 .someTaskResult はエラーなく入力の Object に追加されるようになる。

3
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?