🧬

AWS Step Functionsの新機能「Call third-party API」を試してみた

2023/11/29に公開

AWSが開催する年に一度のカンファレンス「re:Invent 2023」にて、AWS Step Functionsの新機能「Call third-party API」が発表されました。

https://aws.amazon.com/jp/blogs/aws/external-endpoints-and-testing-of-task-states-now-available-in-aws-step-functions/

この機能を使うことでそれまでStep FunctionsだとLambdaとかを使わないとできなかった外部APIの呼び出しがStep Functionsから直接できるようになります。

というわけで今回は、この新機能を試してみたいと思います。

今回試すもの

今回は手軽に試すAPIとしてLINE Notifyを使ったメッセージ通知を試してみます。

LINE Notifyの設定

まずはLINE Notifyの設定を行います。

以下のURLを開き、LINEアカウントでログインします。

https://notify-bot.line.me/ja/

ログイン後にリダイレクトされるページの右上にある「マイページ」をクリックします。

マイページの下部にある「トークンを発行する」をクリックします。

トークンの発行ページを開いたら 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