WebhookのEndpointをLambdaでつくる

Programming

はじめに

エンジニアの皆さんWebhook使っていますか?というかほとんどのエンジニアが自然と使っていますよね。

今回はSlackなどのWebhook EndpointをAWS Lambdaで自作してしまおうという内容です!

内容

そもそもWebhookとは

Webアプリケーションでイベントが実行された際、外部サービスにHTTP POSTで通知する仕組みです。

Slackなどの特定のイベントが発火されたら別のAPIサーバに対してHTTP POSTのリクエストを行う仕組みのことですね。

AWS API GatewayとLambdaを使用してPostエンドポイントの作成

まずはAWS Consoleにサインインしましょう。

Lambdaの作成

Lambdaを作成します。Lambdaとは一言でいうと関数のことです。「WebhookをトリガーにLambdaで処理を行う」ための肝心の処理部分をLambdaで作成します。

今回は手動で作成することが前提です。

Lambdaを作成して、「一から作成」をクリックしてLambdaを作成しましょう。

名前とかは何でもいいのでとりあえずPythonにしておきます。

ソースコードはとりあえずログを表示するだけのコードです。

import json

def lambda_handler(event, context):
    payload = json.dumps(event)
    print('Payload ' + payload)

API Gatewayの作成

API Gatewayを検索してAPIを作成します。

今回はRESTを選択してAPIを作成。

そしたら、アクションを選択してメソッドの作成を選択。

ここで先ほど作成したLambdaとつなげましょう。関数の名前とリンクしているようです。

Lambdaのページに行ってつながっているか確認しましょう。こんな図になっていたらOKです。

あとはAPIをデプロイするだけです。

エンドポイントが公開されることになるのでセキュリティ無設定で公開すること早めておきましょう。今回は検証なのでそのままです。

ローカルでPostして動作するか確認する

curlでPostしてみましょう。

$ curl -X POST -H "Content-Type: application/json" -d '{"message":"it is test"}'  https://{your-api-gateway-domain}.us-east-1.amazonaws.com/

ログにPostしたデータが表示されているはずです。

まとめ

最速で5分もかからずにAPI Postエンドポイントを作成することができました。ちょっとした処理とかだったらすぐ作れるのでホント便利ですねー。

ここまでできたらあとは、esa.ioの記事作成のイベントをwebhookでAWS側で保存したり、Slackに通知したりと幅が広がるので知っておくとお得ですね🤗

参考

#AWS#Lambda#Webhook

Related Links


「技術ブログを支える技術」Esa.ioとLambdaを組み合わせてコンテンツ管理するよ
Yoshiki Ohashi
2x歳の個人事業主エンジニア。SI企業1年, Webベンチャー企業2年で上流から下流の経験を経て独立。 エンジニアらしく性格は温和。プロジェクトチームに心理的安全性を求める。go gin | Spring | Java | Kotlin | Vue | Python | 筋トレ | キャンプ | 個人開発 | 新潟出身

よく読まれている記事


Gatsbyでブログを始めるまで
GatsbyにShare機能、OGPタグをつける
Gatsbyにタグ機能、カテゴリ機能をつける(基礎編)
DL実装するときに理解すること
多機能なGatsbyJSのThemeをつくってnpmに公開した話
© 2020 Yoshiki Ohashi All rights reserved.