StepFunctionに嬉しいアップデートが来ました!
External endpoints and testing of task states now available in AWS Step Functions
- 外部APIを叩けるようになった
- ステート単体でのテストができるようになった
の二本立てですが、この記事では前者の外部APIを叩くというところを試しています。
外部APIを叩けるとなると、真っ先にやりたいのはSlackへの投稿と相場が決まっています。
これでSlackに投稿するためのLambdaを書かなくていい!!
やってみた
StepFunctionsのコンソールから新しいステートマシンを作成します。
「http」でステートを検索してみると、「Call thir-party API」がありました。これです!
このステートをドラッグして入れてあげて、状態名とSlackのWebhookURLを入力します。メソッドはPOSTです。
その下に、Authenticationの項目があります。
「その理由をご覧ください」のリンクをクリックすると、次のような画面が出てきます。どうやらEventBridgeの外部APIを叩く機能を呼び出すようですね。EventBridge側で認証等もやってくれると。
ということで、「EventBridge接続を作成」をクリックします。
SlackのWebhookには特に認証はありませんが、何かしらの認証が求められるのでダミーの値を入れておきます。
ちなみに、送信先タイプに「パートナー」を指定するとSlackがありますが、これはSlack App用なので今回は使用しません。
StepFunctionsの画面に戻り、Authenticationの項目に接続ARNを設定します。
次に、WebhookURLに渡すRequestBodyを指定します。
今回は、入力から渡ってきたテキストを投稿するようにしています。投稿時の名前も上書きするようにしてみました。
入力を渡す項目のキーは、text.$
のように、.$
を付けることに注意してください。
ステートマシンを保存します。特に指定しなければロールが自動で作成されるので、内容を確認します。
「実行を開始」をクリックして、試しに動かしてみましょう。Slackに投稿するテキストを渡してあげます。
まとめ
StepFunctionsから外部APIが叩けるようになったということは、ステートマシンにさまざまなSaaSが組み込めるようになったということです。
今回はSlackを試しただけですが、まさに可能性は無限大!StepFunctionsがますます楽しくなりますね!