AWS Step Functions
VPC Lambda内でStepFunctionsを呼び出す
VPCを作成
DNSホスト名を有効化
サブネットを作成
セキュリティグループの作成
インバウンド
HTTPS → 呼び出されるLambdaが属するセキュリティグループ
エンドポイントの作成
com.amazonaws.ap-northeast-1.states
IAMポリシーを作成
AWSStepFunctionsFullAccessをロールに紐付けても出来るが、広すぎるので作る
以下を許可するポリシーを作成
states:StartExecution
IAMロールを作成
AWSLambdaVPCAccessExecutionRole
先程作ったポリシー
StepFunctionsを作成する
Lambdaを作成する
作ったロールを紐付ける
VPCを有効化する
作ったVPC、サブネット、セキュリティグループ
関数内で作ったStepFunctionsを呼び出す
stateMachineArnは、StepFunctionsで作成したステートマシーンで書き換える
code:python
import json
import boto3
def lambda_handler(event, context):
client = boto3.client('stepfunctions')
ret = client.start_execution(
stateMachineArn='arn:aws:states:ap-northeast-1:xxxxxx:stateMachine:MyStateMachine'
)
return {
'statusCode': 200,
'body': json.dumps('Respons: ' + str(ret))
}
ワークフロータイプ
スタンダード
非冪等アクション
支払処理
2回支払われたら困る
Express
短期間で大量に処理をする場合
最低1回は実行される
2回以上実行される場合もある
冪等アクション
保存処理
同じデータを保存しても目的の結果は変わらない
関数的な性質
もし2回以上実行されて困るケースは、自分たちでハンドリングしないといけない
非同期と同期の種類がある