API GatewayでAPIキー認証付きのHTTP APIを作る
やりたいこと
serverless.ymlを編集する
providerの項目にAPIキーと使用量プランの記述を追加する。
provider:
name: aws
runtime: nodejs6.10
region: ap-northeast-1
apiKeys:
- myFirstKey
usagePlan:
quota:
limit: 5000
offset: 0
period: DAY
throttle:
burstLimit: 200
rateLimit: 100
上記で設定したAPIキーを利用するAPIに対してprivate: trueを指定する。
functions:
hello:
handler: handler.hello
events:
- http:
path: api/hello
method: get
private: true
add:
handler: handler.add
events:
- http:
path: api/add
method: post
private: true
デプロイする
deployコマンドでデプロイする。
作成されたAPIキーの値が出力されるので控えておく
sls deploy -v (省略) service: test-service stage: dev region: ap-northeast-1 stack: test-service-dev api keys: test-api-key: (APIキーの値) endpoints: GET - https://(URL).ap-northeast-1.amazonaws.com/dev/api/hello POST - https://(URL).ap-northeast-1.amazonaws.com/dev/api/add
動作確認
APIキーなしで呼び出す
403 ForbiddenがレスポンスされAPIが呼び出せなくなった。

APIキーありで呼び出す
APIキーをヘッダーに付加するとちゃんと呼び出せる。
