StepFunctionsとGlue(python shell)とで、AWSをパソコン化します。
パソコン化とは、VisualStudioでデバッグするかのような扱いやすさ、という意味です。
Glue python shellは中身的にはlinuxが起動して、pythonが起動するだけ、といえます。かといって、pythonで何かAWSリソースを扱おうとすると、起動したものの終了を待つ処理が必要になってしまいます。
そ・こ・で・!StepFunctionsの【実行完了を待つ】というシンプルな機能をオンにする(チェックボックスを入れるだけ)で、これができます。
大まかには、Glueで単機能のものを作っておき、それをStepFunctionsからGlueをパラメータ渡しで利用します。
実行すると、ステート遷移・進行状況がイラストでわかりやすく、実行したステートの入力・出力をその場で見れ、またステート内のGlueのログについてもリンクをクリックしていくことで容易にCloudWatchの対象ログに辿り着けます。
Glueは例えば、プロセス実行にて、AWS S3 SYNK 元バケット 先バケット /recursive とするものを作っておきます。このとき、パラメータで元バケット、元プレフィクス、先バケット、先プレフィクスを受け取って利用するようにしておきます。
Glueでの外部ライブラリについても、ある程度はパラメータに既定の値で取り込むことが可能というAWSの配慮があります!(AWS Glue ETL で使用するモジュールを追加でインストール https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-python-libraries.html)
Glueジョブは、Connectorにnetworkをセットすることで、どのVPC・サブネットでGlueジョブが実行されるかを設定できます!なので、権限で分けている環境でも、かなり自由に実行できます!
S3はGlueは特別なVPCエンドポイントのエンドポイントからアクセスできるので、権限分けてるといろいろ気になるかもですが、VPC横断して使えるという利点があります。
ETLならSparkモードにすればいいだけですし、ジョブブックマークは便利すぎるし(読み取ったjsonをGlueが裏で覚えてくれる機能。次は【読み取ったことのないjsonだけ読む】)
GlueでVPC横断を含め、いろいろな機能を作り、それをStepFunctionsで俯瞰的に動作順序や例外処理というオーケストレーションする。
しかも見やすい、ログを追いやすい(デバッグしやすい)
なかなかおすすめです。