aws-sam-cli-app-templates/python3.9/cookiecutter-aws-sam-step-functions-sample-app/{{cookiecutter.project_name}} at master · aws/aws-sam-cli-app-templates にあるAWS SAMのサンプルテンプレートに手をいれたもの。 コードを読みながら、コメントとか入れていく。
ほか参照:
SAMだとASLはYAMLで書ける。便利。
起動は AWS::Events::Rule で1時間に1回(デプロイ時はdisable)
ASLで最初は StockCheckerFunction functions/stock_checker/app.py
もし stock_price が50以下なら Buy Stock へ。 それ以外は Sell Stock へ。
Buy Stock は functions/stock_buyer/app.py
Sell Stock は functions/stock_seller/app.py
で、 Record Transaction で DynamoDBに入れる。 すごいのはここASLでできること。
SAMなので
sam build
sam deploy --guided # --guidedは2回め以降は不要
コマンドラインから実行するサンプル start_statemachine.sh
。
デプロイ成功後、準備として
pip3 install -U -r requirements.txt
./export1.py
を1回実行。
その後
./start_statemachine.sh
でステートマシンが実行される。
arn:aws:states:::dynamodb:putItem
みたいののリファレンスはどこにある?
ここ:
- Step Functions 用統合最適化 - AWS Step Functions タイトルから想像できない内容...
- DynamoDBについては Step Functions を使用した DynamoDB API の呼び出し
統合最適化(optimized integrations)以外の呼び出し方は 他のサービスで AWS Step Functions を使用する - AWS Step Functions
arn:aws:states:::aws-sdk:*
を使う
AWS SDK のサービスの統合 - AWS Step Functions
など。「SDK統合」。いちいちlambdaを書かなくてもいいケースが増える。
JsonPath。ASL内では使えない関数あり(lenght()とか)
パスは、JSON テキスト内でコンポーネントを識別するために使用できる $ で始まる文字列です
InputPath、パラメータ、および ResultSelector - AWS Step Functions
パスを使用して値を選択するキーと値のペアの場合、キーの名前は .$ で終わる必要があります。