継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

Step Functions のパラメーターのバリデーションを設定する

タダです.

前回の記事で時限式の 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 のパラメーターパリデーションを初めて設けてみたので,記事にしました.