やれること
今まではDynamoDBでqueryするときなどで, Lambdaを呼んでaws-sdkを利用して色々叩いていました.
これがなんと, StepFunctionsのStateから直接叩けるようになりました🎉
例
DynamoDBにQueryを発行してみます. SDKを利用するときに入れる値と同じ値を入れるだけです.
{
// ...
"States": {
"ExecuteQuery": {
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:dynamodb:query",
"Parameters": {
"TableName": "MyTable",
"KeyConditionExpression": "#pk = :pk AND begins_with(#sk, :sk)",
"ExpressionAttributeNames": {
"#pk": "Key",
"#sk": "Value"
},
"ExpressionAttributeValues": {
":pk": {
"S.$": "$.input.hoge"
},
":sk": {
"S": "fuga_"
}
}
},
"Retry": [
// ...
],
"Catch": [
// ...
],
"InputPath": "$",
"ResultPath": "$.ExecuteQuery",
"OutputPath": "$",
"Next": "aaa"
}
}
出力はこんな感じ
{
"name": "ExecuteQuery",
"output": {
// ...
"ExecuteQuery": {
"Count": 1,
"Items": [
{
"Value": {
"S": "fuga_12345"
},
"Key": {
"S": "hogehoge"
}
}
],
"ScannedCount": 1
}
},
"outputDetails": {
"truncated": false
}
}
あとはStateMachine内で適当に使いましょう
使えるAWS SDKの中身
多分ほぼ全部使えます 👏👏👏
ただ, StepFunctionsの仕様上大きなデータは引き回せないため, S3周りなどで小さいデータ以外を扱う場合は, 普通にLambdaでするほうが安定すると思います.
さいごに
ようやくStepFunctionsでノーコードがまともにできるようになるのでしょうか, 期待しています.