継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

Lambda と EventBridge でリクエストを投げる定期処理を実現する

タダです.

先日,Lambda と EventBridge Scheduler を使ってパラメーターを渡した処理の実行を試してみました.今度は受け取ったパラメーターを使って POST リクエストを特定のエンドポイントに向かって定期実行する処理を試してみたので,この記事でやったことをまとめます. sadayoshi-tada.hatenablog.com

リクエスト処理を実行するコード

定期スケジュールとパラメーターは EventBridge Scheduler が担うため,この記事では Lambda が実行するコードを Go 言語に書いたのですが,その内容を中心にまとめます.

Lambda のコード

リクエストのライブラリは resty を使いました.POSTリクエストに必要な エンドポイント URL やクエリパラメータを EventBridge から渡ってくるので変数に入れ,resty のリクエストのクエリストリングを設定してリクエストを実行するといった形です.

github.com

package main

import (
    "context"
    "fmt"

    "github.com/aws/aws-lambda-go/lambda"
    "github.com/go-resty/resty/v2"
)

type Event struct {
    endpoint  string `json:"endpoint"`
    parameter string `json:"parameter"`
}

func handler(ctx context.Context, event Event) error {
    var result struct{}
    endpoint := event.endpoint
    parameter := event.parameter
    client := resty.New().SetHostURL(endpoint).SetHeader("Content-Type", "application/json")
    resp, err := client.R().SetQueryString(parameter).SetResult(&result).Post("")
    if err != nil {
        return fmt.Errorf("execRequest failed: %w", err)
    }
    fmt.Println(resp)
    return nil
}

func main() {
    lambda.Start(handler)
}

まとめ

EventBridge Scheduler から受け取ったパラメーターを使って Lambda で定期処理を実行するコードを作る機会があったので,まとめました.