3
2

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 3 years have passed since last update.

pythonのrequestsでAPIGateWayをAPIKeyを使って呼び出す

Posted at

概要

ローカルのpythonのプログラムからリクエストを送信してAPI Gateway を呼び出せるかを試してみました。
APIKeyを設定することで呼び出しを制限できるので呼び出しを制限することができます。
処理呼び出し用の画面でも作ってそこのアクセス制限をしてしまう方が楽な方が気もしますが・・・

APIGateWayの設定

  • Lambda関数を作成し、トリガーにAPIGateWayを設定するときに↓のように REST API を指定してセキュリティを API Key にします
    コメント 2020-08-02 235214.png

  • APIGateWayの方では メソッドリクエスト から APIキーの必要性true に変更します。
    コメント 2020-08-02 235424.png

  • アクションからAPIのデプロイを行う

呼び出すPythonのプログラム

  • ↓のようにrequestsを使ってheadersにAPIKeyを設定すれば呼び出すことができます。
import requests
import traceback

if  __name__ == "__main__":
    try:
        
        # APIKeyはAPIGatewayで確認したAPIKey
        headers = {'x-api-key': 'APIKey'}
        # xxxxxxxx の部分は各APIの値 /test2 の部分はリソース名を指定ここでは greet
        url='https://xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/default/test2'
        # 成功のパターン
        rSucess = requests.get(url, headers=headers)
        print(rSucess.status_code)
        print(rSucess.content)

        # 失敗のパターン
        rFail = requests.get(url)
        print(rFail.status_code)
        print(rFail.content)

    except :
        print(traceback.format_exc())
  • 呼び出した結果は↓のように1つ目はapikeyがあるため結果が返ってきますが、2つ目はapikeyがないため失敗となります。
200
b'"Hello from Lambda!"'
403
b'{"message":"Forbidden"}'
3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?