AWS/Amazon API Gateway
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
#contents
**API GatewayからAWS Lambdaを呼び出す。 [#i2d0e487]
AWS Lambdaは、サーバレスでロジックを記述できる関数型のフ...
また API Gateway は、AWSのサービスをRESTで呼び出す事がで...
具体的には
https://xxxx.execute-api.ap-northeast-1.amazonaws.com/de...
などとクエリパラメタ付きのリクエストを送ると、
{
"my_param1": "value1"
}
なんてJSONを echoするAPIを構築してみます。
** Lambda関数の作成 [#ue909962]
*** まずはパラメタを受け取るLambda関数を定義 [#xaa8c941]
Lambdaサービスのトップにアクセスし、関数の作成 >> 一から...
#ref(01.png)
関数名を helloworld に、ロールは新しく作成(lambdaRole)し...
#ref(02.png)
helloworldという関数が作成され、関数を記述する画面が表示...
#ref(03.png)
真ん中あたりの「ハンドラ」というテキストボックスに、lambd...
return {
"my_param1": event['param1']
}
と返すように記述しました。コード全体は以下の通り:
def lambda_handler(event, context):
# TODO implement
#return 'Hello from Lambda'
return {
"my_param1": event['param1']
}
さて右上の「テスト」ボタンをクリックしてみると「テストイ...
#ref(04.png)
図のように、JSONオブジェクトを指定したりできますが、ここ...
*** テスト [#lad1f2b3]
つぎにこの画面下の「作成」をクリックすると、元の画面に戻...
#ref(06.png)
関数の戻り値は
return {
"my_param1": event['param1']
}
と書きましたが、実行結果は
return {
"my_param1": "value1"
}
となっていて、テストイベントの
{
"key3": "value3",
"key2": "value2",
"param1": "value1" ←ココ
}
この値が event['param1'] とやってアクセス出来ることが確認...
** API Gatewayの作成 [#yb7a6a71]
*** つぎにAPI Gatewayを定義 [#m44b7b2d]
つぎにAPI Gatewayを定義して、定義したLambda関数を呼び出し...
API Gatewayのトップにアクセスし「APIの作成」をクリックす...
#ref(02_01.png)
下記のように アクション >> メソッドの作成 をクリックしま...
#ref(02_02.png)
唐突に空のプルダウンが表示されるので、開いてメソッドのGET...
#ref(02_03.png)
ここまででAPI GatewayとLambdaが紐付いた事になります。
*** API Gateway のクエリパラメタの定義 [#o9b75228]
つぎにAPI に クエリパラメタを定義します。ゴールは、
https://xxxx.execute-api.ap-northeast-1.amazonaws.com/de...
とリクエストすると、Lambdaに
{
"param1": "value1"
}
と渡されることなので、 API に q_param というクエリパラメ...
下記画面の「メソッドリクエスト」をクリックします。
#ref(02_04.png)
下記のような画面が出てきました。「URLクエリ文字列パラメー...
#ref(02_05.png)
*** クエリパラメタと、Lambda関数の引数のマッピング [#nb5c...
つづいて、クエリパラメタと Lambda関数の引数をマッピングし...
メソッドの実行画面で「統合リクエスト」を選択します。下記...
#ref(02_07.png)
Content-Type は application/json を選択。下記の「テンプレ...
{
"param1" : "$input.params('q_param')" ,
...
"paramN" : "$input.params('q_paramN')"
}
などと入力します。これで Lambda 内で event['param1'] でア...
#ref(02_08.png)
***テスト [#ua771ddb]
さて、作成したAPIのテストを実施します。下記のメソッドの実...
#ref(02_09.png)
定義済みのクエリパラメタ q_param などの値を指定しつつ、テ...
#ref(02_10.png)
下記のように実行結果が得られれば、テスト完了です。
#ref(02_11.png)
*** デプロイ [#d8ff7170]
つぎにデプロイ(リリース)を行います。アクション >> APIのデ...
#ref(02_12.png)
デプロイするステージを選択します。初めは定義されていない...
#ref(02_13.png)
デプロイが完了し、さらにステージのパラメタを変更できる画...
#ref(02_14.png)
*** APIのURL確認 [#i06ceb58]
先ほどデプロイしたGETメソッドのURLは、下記のようにステー...
https://q0xt61j9f1.execute-api.ap-northeast-1.amazonaws....
と書いてあります。API名(APIのID?) がprefix についたURLに...
#ref(02_15.png)
***実際に HTTP でアクセスしてみる。 [#kea548b3]
最後に、デプロイされたAPIに、実際に HTTP(s) でアクセスし...
curl https://q0xt61j9f1.execute-api.ap-northeast-1.amazo...
{
"my_param1": "value1"
}
が得られました。OKっぽいですね。ちなみにcurlのオプション...
お疲れ様でした。
**関連リンク [#g1205b30]
-[[IDE なしで Maven を使用した .jar デプロイパッケージの...
----
この記事は
#vote(おもしろかった[13],そうでもない[0])
- aaa -- &new{2021-10-25 (月) 09:45:56};
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
#contents
**API GatewayからAWS Lambdaを呼び出す。 [#i2d0e487]
AWS Lambdaは、サーバレスでロジックを記述できる関数型のフ...
また API Gateway は、AWSのサービスをRESTで呼び出す事がで...
具体的には
https://xxxx.execute-api.ap-northeast-1.amazonaws.com/de...
などとクエリパラメタ付きのリクエストを送ると、
{
"my_param1": "value1"
}
なんてJSONを echoするAPIを構築してみます。
** Lambda関数の作成 [#ue909962]
*** まずはパラメタを受け取るLambda関数を定義 [#xaa8c941]
Lambdaサービスのトップにアクセスし、関数の作成 >> 一から...
#ref(01.png)
関数名を helloworld に、ロールは新しく作成(lambdaRole)し...
#ref(02.png)
helloworldという関数が作成され、関数を記述する画面が表示...
#ref(03.png)
真ん中あたりの「ハンドラ」というテキストボックスに、lambd...
return {
"my_param1": event['param1']
}
と返すように記述しました。コード全体は以下の通り:
def lambda_handler(event, context):
# TODO implement
#return 'Hello from Lambda'
return {
"my_param1": event['param1']
}
さて右上の「テスト」ボタンをクリックしてみると「テストイ...
#ref(04.png)
図のように、JSONオブジェクトを指定したりできますが、ここ...
*** テスト [#lad1f2b3]
つぎにこの画面下の「作成」をクリックすると、元の画面に戻...
#ref(06.png)
関数の戻り値は
return {
"my_param1": event['param1']
}
と書きましたが、実行結果は
return {
"my_param1": "value1"
}
となっていて、テストイベントの
{
"key3": "value3",
"key2": "value2",
"param1": "value1" ←ココ
}
この値が event['param1'] とやってアクセス出来ることが確認...
** API Gatewayの作成 [#yb7a6a71]
*** つぎにAPI Gatewayを定義 [#m44b7b2d]
つぎにAPI Gatewayを定義して、定義したLambda関数を呼び出し...
API Gatewayのトップにアクセスし「APIの作成」をクリックす...
#ref(02_01.png)
下記のように アクション >> メソッドの作成 をクリックしま...
#ref(02_02.png)
唐突に空のプルダウンが表示されるので、開いてメソッドのGET...
#ref(02_03.png)
ここまででAPI GatewayとLambdaが紐付いた事になります。
*** API Gateway のクエリパラメタの定義 [#o9b75228]
つぎにAPI に クエリパラメタを定義します。ゴールは、
https://xxxx.execute-api.ap-northeast-1.amazonaws.com/de...
とリクエストすると、Lambdaに
{
"param1": "value1"
}
と渡されることなので、 API に q_param というクエリパラメ...
下記画面の「メソッドリクエスト」をクリックします。
#ref(02_04.png)
下記のような画面が出てきました。「URLクエリ文字列パラメー...
#ref(02_05.png)
*** クエリパラメタと、Lambda関数の引数のマッピング [#nb5c...
つづいて、クエリパラメタと Lambda関数の引数をマッピングし...
メソッドの実行画面で「統合リクエスト」を選択します。下記...
#ref(02_07.png)
Content-Type は application/json を選択。下記の「テンプレ...
{
"param1" : "$input.params('q_param')" ,
...
"paramN" : "$input.params('q_paramN')"
}
などと入力します。これで Lambda 内で event['param1'] でア...
#ref(02_08.png)
***テスト [#ua771ddb]
さて、作成したAPIのテストを実施します。下記のメソッドの実...
#ref(02_09.png)
定義済みのクエリパラメタ q_param などの値を指定しつつ、テ...
#ref(02_10.png)
下記のように実行結果が得られれば、テスト完了です。
#ref(02_11.png)
*** デプロイ [#d8ff7170]
つぎにデプロイ(リリース)を行います。アクション >> APIのデ...
#ref(02_12.png)
デプロイするステージを選択します。初めは定義されていない...
#ref(02_13.png)
デプロイが完了し、さらにステージのパラメタを変更できる画...
#ref(02_14.png)
*** APIのURL確認 [#i06ceb58]
先ほどデプロイしたGETメソッドのURLは、下記のようにステー...
https://q0xt61j9f1.execute-api.ap-northeast-1.amazonaws....
と書いてあります。API名(APIのID?) がprefix についたURLに...
#ref(02_15.png)
***実際に HTTP でアクセスしてみる。 [#kea548b3]
最後に、デプロイされたAPIに、実際に HTTP(s) でアクセスし...
curl https://q0xt61j9f1.execute-api.ap-northeast-1.amazo...
{
"my_param1": "value1"
}
が得られました。OKっぽいですね。ちなみにcurlのオプション...
お疲れ様でした。
**関連リンク [#g1205b30]
-[[IDE なしで Maven を使用した .jar デプロイパッケージの...
----
この記事は
#vote(おもしろかった[13],そうでもない[0])
- aaa -- &new{2021-10-25 (月) 09:45:56};
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: