LoginSignup
6
2

More than 5 years have passed since last update.

AWS Step Functions がAPI Connectorsの実装でLowCodeになったので触ってみる

Posted at

Low-Code/No-Code Advent Calendar 2018

みなさんこんにちは。

本記事は、「Low-Code/No-Code Advent Calendar 2018」の18日目の記事です。

今回は、Amazon Web Services上のサービスである「Step Functions」について間単に触ってみたいと思います。

Step Functions とは

AWS Step Functions (分散アプリケーションとマイクロサービスの構築) | AWS

AWS の複数のサービス処理を、ビジュアルフローとして定義できる管理サービスです。1関数ごとの処理が比較的短めで、ともするとロジックの全体像が分かりにくくなりがちなサーバレスアプリケーションにおいて、
全体のロジックをわかりやすく管理できるメリットがあります。
主にシステムのバックエンド側の処理に用いられるもので、例えば

  1. バッチ処理の管理
  2. Webサービスの内部処理
  3. チャットボットの内部処理

などなど。様々な場面で利用できます。

Low Code?

Low-Code/No-Codeの文脈で言うと、Low Codeに分類されます。
下記のように、各処理の定義の設定は、状態を記述するASLという独自仕様の言語(JSONフォーマット)で記述します。
例えばNode-Redのような、ビジュアルなパーツを繋ぐような機能は、現時点ではありません。

image.png

また、パーツとなる各処理についても、実際の処理内容については、別途定義されたLambda FunctionなどをARN(リソースのID)で指定して呼び出す必要がありました。

AWS Step Functionsのアップデート

re:Invent 2018にて、Step Functionsが新たに8つのマネージドサービスと連携可能になることが発表されました。

  1. クラメソさんのブログ [神アップデート]Step Functionsが新たに8つのマネージドサービスと連携可能になりました! #reinvent
  2. Amazon 公式のブログ New – Compute, Database, Messaging, Analytics, and Machine Learning Integration for AWS Step Functions

何ができるようになったの?

何か新しいサービスができたわけではなく、特定のAWSサービスを、Lambda 無しで操作(一部)できるようになっただけです。

統合できるAWSサービスは、下記ドキュメントに記載があります。

AWS Step Functions 開発者ガイド - Step Functions でサポートされる AWS サービス統合

本記事執筆時点では、re:Invent発表時点と同様、下記のサービス(の一部操作)が対象です。なお、元々は1.のAWS Lambdaファンクションのみでした。

  1. AWS Lambda
  2. AWS Batch
  3. Amazon DynamoDB
  4. Amazon ECS/Fargate
  5. Amazon SNS
  6. Amazon SQS
  7. AWS Glue
  8. Amazon SageMaker

触ってみる

AWSのコンソールにサインインした状態であれば、サンプルを間単に試すことができます。下記の例では、東京リージョンで実行しています。

AWS Step Functions

「今すぐ始める」ボタンから、新たにサンプルのプロジェクトを作成してみます。

image.png

サンプルプロジェクトからの作成を選び、「データレコードの転送」というプロジェクトを選択します。下のほうに今から作るプロジェクトの定義が表示されます。詳細は後で確認するので、「次へ」で進みます。

image.png

選択したサンプルを、実際の環境で使えるようにデプロイ(配備)します。サンプルで作られるリソースを確認すると、Lambda 関数のほかに、SQSのキューとDynamoDBのテーブルも作成されることがわかります。
今回、Lambda関数を介さなくても利用できるのは、この2つのリソースになります。

「リソースのデプロイ」を実行すると、CloudFormationが実行されて、実際のリソースが展開されます。数分待ちましょう。

image.png

数分待つと、Step Functionsのコンソールに、1つステートマシンが作成されているのが確認できます。
image.png

中を開いて、「定義」を確認してみます。
image.png

まず最初のステート「"Seed the DynamoDB Table"」ですが、こちらは、サンプルのためのテーブルを作る処理で、従来通りにLambda関数を呼び出しています。
指定しているARNの部分も、別途定義済みのLambda関数を呼び出す、標準的な形式のARNですね。

image.png

一方、DynamoDBから値を読む「"Read Next Message from DynamoDB"」とSQSキューにメッセージを送る「"Send Message to SQS"」の処理では、“MagicARN”形式と、付随するパラメーターの指定になっています。

image.png

実際に実行してみます。結果を見ると、「"Read Next Message from DynamoDB"」のステップで、DynamoDBから読み取ったデータがJSON形式で表示されています。

image.png

パラメーターの指定だけで、Lambda関数を介さなくても、DynamoDBやSQSとデータのやり取りができていることが確認できます。

まとめ

Low Code/No Codeの観点から見ると、だいぶCode寄りのサービスではありますが、
コードの記述量を減らし、アプリケーションの改修速度を向上させることができる、非常に素晴らしいアップデートだと感じました!

まだまだ統合サポートされているAPIやサービスの数は少ないですが、今後の拡充に期待したいところです。
チャットボットや、VUIサービスのバックエンドに使って、開発効率を上げていきたいと思います。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2