概要
lambda にはトリガー機能があり様々なトリガーを元に lambda を実行することができます
今回は curl でエンドポイントにアクセスして lambda を実行してみたいと思います
環境
- AWS lambda 2019/01/25 時点
- Ruby 2.5
API Gateway の作成
まずはトリガーとなる API Gateway を関数に紐づけます
関数を選択して左メニューのトリガー一覧から「API Gateway」を選択します
ポイントはセキュリティの部分です
今回は「API キー使用でのオープン」にしました
リクエストヘッダに API をコールするためのキーを指定することで実行することができます
設定できたら「追加」して関数の設定を「保存」しましょう
API Gateway のトリガーが作成できると以下のようになります
curl を叩く
あとはこのエンドポイントに対して curl するだけです
curl -H 'x-api-key: SUxNxpRcYiadKY1juNSiz5XraV9T2EVa608tKmIl' https://7xt0qcg5ya.execute-api.ap-southeast-2.amazonaws.com/default/layers_test_func
リクエストヘッダに x-api-key
を指定するだけです
関数のログ (Cloud Watch) を確認するとちゃんと関数が実行されているのが確認できると思います
トラブルシューティング
API Gateway からのレスポンスが 502 {"message": "Internal server error"}
で返ってくる場合は lambda のレスポンスがちゃんと JSON になっているか確認しましょう
require 'json'
def lambda_handler(event:, context:)
{ "statusCode": 200, "body": "hello" }
end
こんな感じのレスポンスにすればちゃんと curl のレスポンスも 200 になります
最後に
API Gateway と lambda を組み合わせて lambda 関数を curl で実行できるようにしてみました
lambda にトリガーを設定するだけなのでかなり簡単に実現できます
lambda のトリガーには他にもいろいろなトリガーがあります
0 件のコメント:
コメントを投稿