Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 8502

Step Functions のパラメーターのバリデーションを設定する - 継続は力なり

$
0
0

タダです.

前回の記事で時限式の Aurora Clone の削除を Step Functions で試した記事を書きました.今回の記事ではその関連として Aurora を削除するときのパラメーターで渡す際に意図したインプットを次のステートに引き継げるようバリデーションを設けてみます.

sadayoshi-tada.hatenablog.com

Step Functions で行うバリデーション

削除する Aurora を意図したものだけ消して,関係ない Aurora を削除しないようにバリデーションを設けていくのですが,Step Functions のどういった設定を行うかを検討していきます.今回の要件としては削除する Aurora の DB インスタンス名をパラメーターとして渡す際に,関連するインスタンス名の文字列が渡ってきているかをチェックしたいです.そのために,Choiceステートを使います.文字列一致判定の演算子StringMatchesがあり,判定の値にはワイルドカードを使用することができます.この記事では taddy-test-*-cloneという命名の DB インスタンスを削除するようにしたいという前提で,バリデーションを設定します.

設定例

{"Variable": "$.foo",
 "StringMatches": "log-*.txt"
}

関連記事docs.aws.amazon.com

前回記事の ASL にバリデーションを足す

文字列のバリデーションを前回記事の ASL に足しました.InputVariableCheckekを足していています.taddy-test-*-cloneという文字列でパラメーターが渡ってきたら Aurroa の削除のステートを実行できるようになります.逆にそれ以外のパラメーターが渡ってきたら失敗判定になるように Not演算子を使っています.

{"Comment": "Delete Aurora Cluster and instance",
  "StartAt": "InputVariableCheckek",
  "States": {"InputVariableCheckek": {"Type": "Choice",
      "Choices": [{"Not": {"Variable": "$.DbInstanceIdentifier",
            "StringMatches": "taddy-test-*-clone"
          },
          "Next": "Fail"
        }],
      "Default": "DeleteDBInstance"
    },
    "Fail": {"Type": "Fail"
    },
    "DeleteDBInstance": {"Type": "Task",
      "Parameters": {"DbInstanceIdentifier.$": "$.DbInstanceIdentifier",
        "SkipFinalSnapshot": true},
      "Resource": "arn:aws:states:::aws-sdk:rds:deleteDBInstance",
      "Next": "DeleteDBCluster",
      "ResultSelector": {"DbClusterIdentifier.$": "$.DbInstance.DbClusterIdentifier"
      },
      "OutputPath": "$.DbClusterIdentifier"
    },
    "DeleteDBCluster": {"Type": "Task",
      "Parameters": {"DbClusterIdentifier.$": "$",
        "SkipFinalSnapshot": true},
      "Resource": "arn:aws:states:::aws-sdk:rds:deleteDBCluster",
      "End": true}}}

試しに失敗のパラメーターを渡してみると期待通りに失敗判定になりました.

DbInstanceIdentifier として hogeを渡す

次に taddy-test-hoge-cloneというバリデーションを通過するパラメーターを渡してみると DeleteDBInstanceに進みました.

該当のクラスターがないためエラーが出ていますが,想定通りの分岐ができています

まとめ

Step Functions のパラメーターパリデーションを初めて設けてみたので,記事にしました.


Viewing all articles
Browse latest Browse all 8502

Trending Articles