タダです.
前回の記事で時限式の Aurora Clone の削除を Step Functions で試した記事を書きました.今回の記事ではその関連として Aurora を削除するときのパラメーターで渡す際に意図したインプットを次のステートに引き継げるようバリデーションを設けてみます.
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 } } }
試しに失敗のパラメーターを渡してみると期待通りに失敗判定になりました.
次に taddy-test-hoge-clone
というバリデーションを通過するパラメーターを渡してみると DeleteDBInstance
に進みました.
まとめ
Step Functions のパラメーターパリデーションを初めて設けてみたので,記事にしました.