Skip to content

Latest commit

 

History

History
104 lines (66 loc) · 3.51 KB

README.md

File metadata and controls

104 lines (66 loc) · 3.51 KB

sam-stock-trader

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

でステートマシンが実行される。

最適化統合(optimized integrations)

arn:aws:states:::dynamodb:putItem みたいののリファレンスはどこにある?

ここ:

統合最適化(optimized integrations)以外の呼び出し方は 他のサービスで AWS Step Functions を使用する - AWS Step Functions

arn:aws:states:::aws-sdk:* を使う AWS SDK のサービスの統合 - AWS Step Functions など。「SDK統合」。いちいちlambdaを書かなくてもいいケースが増える。

ASLの '$.' とは?

JsonPath。ASL内では使えない関数あり(lenght()とか)

パスは、JSON テキスト内でコンポーネントを識別するために使用できる $ で始まる文字列です

ASLの '.$' とは?

InputPath、パラメータ、および ResultSelector - AWS Step Functions

パスを使用して値を選択するキーと値のペアの場合、キーの名前は .$ で終わる必要があります。

ASLの仕様は

ここ: Amazon States Language