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キーをヘッダーに付加するとちゃんと呼び出せる。