LoginSignup
0
1

More than 3 years have passed since last update.

【APIGateway+Lambda】AWS外からのパラメーターを使用する

Last updated at Posted at 2021-02-25

先ずはLambda関数を作成

今回は与えらえた値を返すだけのtest_return_valuablesという
シンプルな関数をPythonで作成します。

スクリーンショット (154).png

APIGatewayでAPIを作成

スクリーンショット (150)_LI.jpg

REST APIを選択し構築。

さらにメソッド作成でPOSTを追加します。
スクリーンショット (158).png

これでPOSTメソッドをAPIとして使用できます。

Lambdaと統合

次にAPIGatewayから実行するLambdaを統合します。

リソースの画面からPOSTをクリック

統合タイプにデフォルトでLambdaが選択されているためそのまま統合したい関数を入力します。

スクリーンショット (157).png

Lambdaの統合はたったこれだけで完了します。

APIGatewayとの統合はシンプルで良いですね

それではこのAPIをデプロイして外部からアクセスできる様にしましょう。

デプロイを忘れるとエンドポイントが作成されていないため、外部からアクセスできません。

リソースを作成してるのにAPIが使えないのは直観ではわかりにくかったです…

スクリーンショット (153)_LI.jpg

ステージ選択→新しいステージを作成→わかりやすい名前で作成(今回はdefault)

それではコンソールからPOSTメソッド指定してリクエストを送ってみます。

ステージ作成時に表示されたAPIエンドポイントへリクエストを送ります

$ curl  -X POST https://xxxxxxx.execute-api.us-east-2.amazonaws.com/default

>> {}

パラメーターが何もないため空欄が返されました。
APIGatewayとLambdaが正常に機能していることが分かります。

しかしこのままクエリパラメータを送ってもLambdaには引数として渡すことはできません。

$ curl  -X POST https://xxxxxxx.execute-api.us-east-2.amazonaws.com/default?name=hoge
>> {}

パラメーターをマッピングしてAWS側で受け取れようにしましょう。

マッピング

リソースの画面で統合リクエストを選択

マッピングテンプレート

スクリーンショット (151)_LI.jpg

新たにマッピングテンプレートを追加します。
application/jsonと入力

スクリーンショット (152).png

上記のように

{
"受け取るパラメーター名": "$input.params('送る際のパラメーター名')"
}
のように記載すると、Lambda関数でevent変数としてパラメーターを使用できるようになります。

$input.paramsはAPIGatewayを使用してパラメーターを送った際に自動的に格納される場所です。

最後にリソースを忘れずにデプロイしましょう!

デプロイされたリソースの反映には少し時間がかかるようなので、時間が経ってから再度更新されたエンドポイントへリクエストを送信

$ curl  -X POST https://aj7i8pust1.execute-api.us-east-2.amazonaws.com/default?name=hoge
>> {"name": "hoge"}

無事パラメーターを送信できました。

アクセスを制限したい場合はapi-keyなども必須にすることもできます。

$ curl  -X POST -H "x-api-key: correct_api_key" https://aj.execute-api.us-east-2.amazonaws.com/default?name=hoge
>> {"name": "hoge"}

key間違い

$ curl  -X POST -H "x-api-key: incorrect_api_key" https://xxxxxxx.execute-api.us-east-2.amazonaws.com/default?name=hoge
>> {"message":"Forbidden"}

keyなし

$ curl  -X POST -https://xxxxxxxx.execute-api.us-east-2.amazonaws.com/default?name=hoge
>> {"message":"Forbidden"}

>> APIキーの設定方法はこちら解説してますのでよろしければご覧くださいー

0
1
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
0
1