[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
必要があり、チュートリアル: Lambda と DynamoDB を使用した CRUD API の構築 - Amazon API Gatewayを試したのだが、そのままやっても面白くないので API Gateway を HTTP API じゃなくて REST API にしてみた。
この両者はできること・できないことがそれぞれあるらしい(Choosing between HTTP APIs and REST APIs - Amazon API Gateway)。接続元 IP アドレスによってアクセスを制限するには REST API じゃないと難しいようだ(特定の IP アドレスが API Gateway REST API にアクセスすることを許可する)。試しに作ってみたは良いが変な人に大量アクセスされて課金がにゃーんするのは嫌なのでアクセス制限をかけるために REST API で作ってみる。
REST API では各リソースに対して各メソッドを使ってアクセスする。リソースは URL のパスで表現される。しかし、このパスはどうやって定義すれば良いのかが最初はよくわからなかった。
リソースから「リソースの作成」でこれを実施できる。各リソースを作ったらリソースに対してメソッドの作成を行えば各メソッドを実行した時に何が起こるのかを定義できる。
Lambda 関数を上述の状態で実行したところ、Lambda 関数に id 等のパラメータがわたっていなかった。メソッドを設定する際に「Lambda プロキシ統合の使用」にチェックを入れなければ引数が渡らないそうだ。
チュートリアルコンテンツのサンプル Lambda 関数は event.routeKey
で分岐しているが、routeKey
の値が渡ってこない(undefined になる)。その関係で以下のような感じに改変した(一部抜粋)。
const requestKey = `${event.httpMethod} ${event.resource}`; try { switch (requestKey) { case "DELETE /items/{id}":
ただ、本来はメソッド毎に関数を分けるべきなんだと思う。
ただいまコメントを受けつけておりません。