API GatewayとLambdaが今ひとつわかってないので手を動かして勉強しました。
内容は以下の動画を参考にさせてもらいました。
AWSマネジメントコンソースからlambdaを選択し、関数を作成します。

Function nameはTransationProcessor、RuntimeはPython 3.6、PermissionsではCreate a new role with basic Lambda permissionsを選択します。
※Create a new role with basic Lambda permissionsはCloudWatchのパーミッションも含まれているようです。
Create functionをクリックするとLambda関数が作成され、以下のようにDesignerが表示されます。

※動画だとここでAmazon CloudWatch Logsも表示されている。
Lambda関数のコードを確認してみると、ボイラープレートのコードがありました。
ローカルで以下のコードを作成します。
import json
print('Loading function')
def lambda_handler(event, context):
transactionId = event['queryStringParameters']['transactionId']
transactionType = event['queryStringParameters']['type']
transactionAmount = event['queryStringParameters']['amount']
print('transactionId=' + transactionId)
print('transactionType=' + transactionType)
print('transactionAmount=' + transactionAmount)
transactionResponse = {}
transactionResponse['transactionId'] = transactionId
transactionResponse['type'] = transactionType
transactionResponse['amount'] = transactionAmount
transactionResponse['message'] = 'Hello from Lambda land'
responseObject = {}
responseObject['statusCode'] = 200
responseObject['headers'] {}
responseObject['headers']['Content-Type'] = 'application/json'
responseObject['body'] = json.dumps(transactionResponse)
return responseObject
マネジメントコンソールのLambdaのコードに上記のコードを貼り付け保存します。

これでLambdaの準備はできました。
API Gatewayのマネジメントコンソールを開きREST APIのBuildをクリックします。

API作成画面でNew APIを選択し、API nameはTransactionApis、Endpoint TypeはRegionalを選択してCreate APIをクリックします。

無事APIが作成され以下の画面に遷移しました。

ActionsからCreate Resourceをクリックします。

Resource Nameにtransactionsと入力し、それ以外はデフォルトのままでCreate Resourceをクリックします。

次にActionsからCreate Methodをクリックします。

MethodをGETにしてIntegrations typeはLambda Function、 Use Lambda Proxy integrationはチェック、Lambda Regionは先ほどLambdaを作成したリージョンを選択、LambdaはTransactionProcessorを選択してSaveをクリックします。
Integrations typeはAPIリクエストをどこに送るか、という内容で今回はLambdaを呼び出したいのでLambda Functionを選択しています。
EC2などのHTTPエンドポイントにリクエストを送りたい場合はHTTPを選択するようです。
別のAWSサービスに送る場合はAWS Serviceを選択するようです。
Use Lambda Proxy integrationsは重要そうな項目なのですが、まだ勉強できていないので後から調べたいと思います。

すると以下のポップアップが表示されました。

API GatewayにLambda関数を呼び出す許可を与えます、という意味だと思いますのでOKをクリックします。
すると以下の画面が表示されました。

図の意味はまだよくわかっていないので後から勉強します。
次にAPIをデプロイする必要があるのでActionsからDeploy APIをクリックします。

するとDeployする詳細を入力するポップアップが表示されます。
Deployment stageで[New Stage]を選択し、Stage nameはtestと入力してDeployをクリック。
※Stage nameでproductionとtestを分けたり、v1やv2など分けるようです。

無事デプロイされました。

test配下のtransactionのエンドポイントもできていることが確認できます。

ブラウザからアクセスしてみるとLambda関数で出力された値が帰ってきました。
