AWS Step Functionsの新機能「Call third-party API」を試してみた
AWSが開催する年に一度のカンファレンス「re:Invent 2023」にて、AWS Step Functionsの新機能「Call third-party API」が発表されました。
この機能を使うことでそれまでStep FunctionsだとLambdaとかを使わないとできなかった外部APIの呼び出しがStep Functionsから直接できるようになります。
というわけで今回は、この新機能を試してみたいと思います。
今回試すもの
今回は手軽に試すAPIとしてLINE Notifyを使ったメッセージ通知を試してみます。
LINE Notifyの設定
まずはLINE Notifyの設定を行います。
以下のURLを開き、LINEアカウントでログインします。
ログイン後にリダイレクトされるページの右上にある「マイページ」をクリックします。
マイページの下部にある「トークンを発行する」をクリックします。
トークンの発行ページを開いたら 1:1でLINE Notifyから通知を受け取る
を選択して、 発行する
ボタンをクリックしてアクセストークンを発行します。一度発行したアクセストークンは再発行ができないので、発行したアクセストークンはどこかにメモしておきます。
Event Bridgeの設定
Step Functionsの設定を行う前に、Event Bridgeの設定を行います。
今回使う機能は予めEvent BridgeにAPIの接続先を登録されている必要があります。
今回の場合はLINE Notifyの接続情報(アクセストークンなど)を登録していきます。
AWSのコンソールからEvent Bridgeを開き、左のメニューから APIの送信先
をクリックします。
APIの送信先のページが開いたら、 接続
タブをクリックして、 接続を作成
ボタンをクリックします。
- 接続名: 任意の名前を入力
- 説明: 任意の説明を入力(空欄でも可)
送信先タイプでは その他
を選択します。認証タイプでは APIキー
を選択して、以下の設定を行います。
- APIキー名:
Authorization
- 値:
Bearer <LINE Notifyのアクセストークン>
呼び出しHttpパラメータ
のトグルをクリックして、以下の設定を行います。
- パラメータ:
ヘッダー
- キー:
Content-Type
- 値:
application/x-www-form-urlencoded
Step Functionsの設定
いよいよStep Functionsの設定を行います。
AWSのコンソールからStep Functionsを開き、 ステートマシンの作成
ボタンをクリックします。
テンプレートは Blank
を選択して、選択
ボタンをクリックします。
Workflow Studioが開いたら、左のアクションから Call third-party API
を選択して、ワークフローにドラッグ&ドロップします。
ドロップしたら、右側のプロパティから以下の設定を行います。
- APIエンドポイント:
APIエンドポイントを入力
をクリックしてhttps://notify-api.line.me/api/notify
を入力 - メソッド:
POST
- Authentication: Event Bridgeで作成したAPIの接続を選択
リクエスト本文では、 リクエスト本文を入力
を選択して以下のJSONを入力します。
{
"message.$": "$.inputValue"
}
ここでのポイントは、LINE NotifyのAPIでは message
というキーと値を設定するのですが、今回は入力のJSONの値を参照してメッセージを送信するので、 message.$
というようにリクエストボディのキー名の最後に .$
をつけています。
さらに、キー message.$
の値を $.inputValue
とすると、入力のJSONのキー inputValue
の値を参照することができます。
リクエスト本文の設定が終わったら 詳細パラメータ
トグルをクリックして、 URLエンコーディングをリクエスト本文に適用
にチェックを入れます。
配列エンコーディングオプションには 括弧を使用
を選択します。
ここまで設定ができたらWorkflow Studioの右上にある 保存
ボタンをクリックして、ステートマシンを保存します。
動作確認
実際にステートマシンを実行してみます。
Workflow Studioの右上にある 実行
ボタンをクリックします。
実行画面の入力では、以下のJSONを入力し、 実行を開始
ボタンをクリックします(日本語がおかしいのはご愛嬌...)
{
"inputValue": "Hello World!"
}
実行し、手元のLINEアプリに以下の通り通知が届けば動作確認は完了です。
まとめ
今回はStep Functionsの新機能「Call third-party API」を試してみました。
それまでLambdaでしか実現できなかった外部APIの呼び出しがAWSでもローコードで実現できるようになるのはかなり魅力的だと思います。
今回のように入力のJSONの値をそのまま外部APIのリクエストに渡す流れを試すことができたのも個人的にはStep Functionsの可能性を感じることができました。
APIの実行にあたっては認証情報をEvent Bridgeで登録する必要があるのは初見ではなかなか気づかなくてハマりましたが、認証情報の設定方法がわかればあとの設定はAPIの仕様に合わせて設定すればどんなAPIでも呼び出せると思います。
Discussion