タダです.
先日,Lambda と EventBridge Scheduler を使ってパラメーターを渡した処理の実行を試してみました.今度は受け取ったパラメーターを使って POST リクエストを特定のエンドポイントに向かって定期実行する処理を試してみたので,この記事でやったことをまとめます. sadayoshi-tada.hatenablog.com
リクエスト処理を実行するコード
定期スケジュールとパラメーターは EventBridge Scheduler が担うため,この記事では Lambda が実行するコードを Go 言語に書いたのですが,その内容を中心にまとめます.
Lambda のコード
リクエストのライブラリは resty
を使いました.POSTリクエストに必要な エンドポイント URL やクエリパラメータを EventBridge から渡ってくるので変数に入れ,resty
のリクエストのクエリストリングを設定してリクエストを実行するといった形です.
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 で定期処理を実行するコードを作る機会があったので,まとめました.