1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

lambda Amazon API Gateway APIキー認証を用いた認証付きAPIを作ってみる

Posted at

概要

  • lambdaとAPI Gatewayを使ってAPIキー認証を使った認証付きAPIを作ってみたので方法をまとめる。

情報

  • 筆者はMacOSの端末を使っている。

方法

lambdaの準備

  1. 下記の情報でlambda関数を作成する。
    • 関数の種別:一から作成
    • 関数名:returnHello
    • ランタイム:Node.js 18.x
    • アーキテクチャ:x86_64
    • 基本的な Lambda アクセス権限で新しいロールを作成
  2. 関数作成時に作成されたindex.mjsの内容は特に変更せず、Testを実行して、200のステータスと「Hello from Lambda!」の文字列が返されることを確認する。

API Gatewayの準備

  1. lambdaの「関数の概要」から「トリガーを追加」をクリックする。

    returnHello_-_Lambda.png

  2. 「ソースを選択」から「API Gateway」を選択する。

    トリガーの追加_-_Lambda.png

  3. 下記の様に設定する。

    • intent: Create a new API
    • API type: REST API
    • Security: API key
  4. 内容が問題無さそうなら「追加」をクリックする。

    トリガーの追加_-_Lambda.png

  5. lambdaの設定 → トリガーからAPI Gatewayがトリガーとして設定されていることを確認する。

    returnHello_-_Lambda.png

curlを用いて実行

  1. まずはAPI keyを渡さない状態でAPI endpointにcurlでリクエストを送ってみる。

  2. 下記のコマンドをターミナルで実行する。

    curl エンドポイントURL
    
  3. 下記の様に権限がない旨のレスポンスが帰ってくる。

    {"message":"Forbidden"}
    
  4. 次にcurlのヘッダーにAPI keyを添付して実行してみようと思う。

  5. ブラウザからAmazon API Gatewayを開く。

  6. APIの一覧から今回の作業で追加されたAPIの「returhHello-API」をクリックする。

    API_Gateway_-_APIs.png

  7. 左サイドバーの「APIキー」をクリックする。

    API_Gateway.png

  8. 「returnHello-Key」をクリックする。

    API_Gateway.png

  9. APIキーの「表示」をクリックしてAPIキーを表示する。(ここで表示されるランダムな文字列は第三者が閲覧できる場所への記載はしないほうが良いです。)

    API_Gateway.png

  10. APIキーをコピーする。

  11. 下記のコマンドをターミナルで実行する。

    curl -H 'x-api-key:コピーしたAPIキー' エンドポイントURL
    
  12. 下記の様にindex.mjsで定義した内容が返された。

    "Hello from Lambda!"
    
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?