2019年1月30日水曜日

AWS lambda を curl で実行する

概要

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 件のコメント:

コメントを投稿