[demo(連結テスト)] センサー情報処理: API Gateway + Lambda を使ったAPIテスト

AWS

API GatewayとLambdaを連携させた部分の連結テスト
APIエンドポイントを通してLambdaの動作確認を行いました。

実施内容

  • CloudFormationによるインフラ構築
  • Lambda関数(Python)でセンサーデータを処理
  • API Gateway経由でリクエストを送信し、動作を確認

テスト対象のAPIエンドポイント

https://qrj6l149kc.execute-api.ap-northeast-1.amazonaws.com/dev/vehicle-data-demo_01Code language: JavaScript (javascript)

テスト1:リクエストボディなし

リクエストボディなしでPOSTリクエストを送ってみる。

curl -X POST https://qrj6l149kc.execute-api.ap-northeast-1.amazonaws.com/dev/vehicle-data-demo_01Code language: JavaScript (javascript)
akira_mba@amba scripts % curl -X POST https://qrj6l149kc.execute-api.ap-northeast-1.amazonaws.com/dev/vehicle-data-demo_01

{"error": "Missing request body"}%                                                                                                                                     
akira_mba@amba scripts % 

リクエストボディなしの場合のメッセージも想定通り応答が応答が返ってきている。

{"error": "Missing request body"}Code language: JSON / JSON with Comments (json)

テスト2:JSONデータあり

JSON形式のセンサーデータのサンプル値を付与して送信してみる
– H : "Content-Type: application/json"
 →「送信するデータが JSON 形式であること」をサーバーに伝える
– d : '{"sensor_id": "abc123", "temperature": 25.7}'
 →適当なサンプル値

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"sensor_id": "abc123", "temperature": 25.7}' \
  https://qrj6l149kc.execute-api.ap-northeast-1.amazonaws.com/dev/vehicle-data-demo_01Code language: JavaScript (javascript)
akira_mba@amba scripts % curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"sensor_id": "abc123", "temperature": 25.7}' \
  https://qrj6l149kc.execute-api.ap-northeast-1.amazonaws.com/dev/vehicle-data-demo_01

{"message": "Sensor data received successfully", "sensor_id": "abc123"}%                                                                                               
akira_mba@amba scripts % 

以下の正常応答のメッセージも想定通り

{"message": "Sensor data received successfully", "sensor_id": "abc123"}Code language: JSON / JSON with Comments (json)

まとめ

CloudFormationによってインフラ構成をコード化し、API Gateway + Lambdaの構成を効率的に構築・テストができました。

今後は以下のような点も検証予定です:

  • CloudWatch Logsでのログ監視
  • WAFによるアクセス制御の検証
  • LambdaからDynamoDB等へのデータ連携