CloudFormationテンプレート内のStep functionsのState machine定義をS3に置けるようになった
まえおき 今週あったチーム先輩(Aさん)との会話 私 :CloudFormationテンプレートにStepfunctionsを書こうとするとyamlにベタ書きしかできないんですよ。 これが私がCDKを押す理由の一つなんですよ。 Aさん:LambdaみたいにS3バケットに定義ファイルを置いてそのパスをyamlに書けばいいじゃん。 私 :あれ?私が調べたときはそれができなかったので、今あるテンプレートはすべてベタ書きにしているんですが…。 Aさん:うん?これでできないんだけ?(CloudFormationのドキュメントURLを共有) 私 :できるじゃん!? 送られてきた CloudFormationドキュメント を見ると、 DefinitionS3Location というプロパティがあった。おかしいな…調べたときは本当になかったんだようなーと思いずつ更新履歴を見ると、2020年5月20日更新。私が調べたのは1月ごろだったから、その時はなかったということだ。うーん、What's Newはほぼ毎日見るけど、使っているサービスのドキュメント更新履歴も頻繁にチェックしないといけないのかな…。とりあえず、試してみることにした。 DefinitionS3Locationを試してみる Step Functionsのテンプレートを準備 State Machineの定義はAWSドキュメントの Getting Started with Step Functions にあるコードから最後のstateを少し変えた簡単な以下のコードを利用する。 DefinitionSubstitutions も使ってみたかったので。 DefinitionSubstitutions はテンプレート内で同時に作成されるリソースをState Machine内で利用する場合に使う。例えば、Lambdaを作成して、それをState machineに入れるとか。(LambdaのARNが必要になる) jsonファイルで保存し、S3のバケットに保存する。 これでStep Functions側の準備は終わり。 CloudFormationテンプレートを準備 CloudFormationの StepFunctions::StateMachi...