AWS Lambdaでサーバー側の処理を実装する | AWSサーバレス構築 サーバレスバックエンド
ロードマップ
-
├ 静的ウェブホスティング : S3
-
├ サーバーレスバックエンド : Lambda ← いまココ
-
├ RESTful API : API Gateway
-
└ Webページ作成 : HTML, JavaScript
新規作成
関数を「一から作成」を選択して作成。ランタイムはプログラムを記述する言語を選択するところで、今回はPythonを選択
実行ロールは「基本的なLambdaアクセス権限で新しいロールを作成」を選択すると、Amazon CloudWatch Logs にログをアップロードするアクセス権限を持つIAMロールとポリシーが作成されて、CloudWatchLogsというサービスも自動で登録される。Lambdaの実行ログがCloudWatchに蓄積されるようになる。
記述例
-
lambda_handler関数の引数「event」に、コール元から渡されたjsonデータが含まれる
-
通信で送る場合は文字列データにして送り、受信先でその文字列をデータ型に置き換えて使用する。
import json def lambda_handler(event, context): # 渡されたデータ受け取り event_body = json.loads( event["body"] ) receivedValue1 = event_body["Key1"] receivedValue2 = event_body["Key2"] # 返信するデータを作成(辞書型データ) returnJsonData = { "Name": "Yamada", "ReceivedVal1": receivedValue1, "ReceivedVal2": receivedValue2 } # 返信処理(bodyに辞書型データを文字列型に変換したものをセット) return { 'statusCode': 200, 'headers': { 'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'OPTIONS,POST,GET' }, 'body': json.dumps( returnJsonData ) }
returnにある「header」については、オリジン間リソース共有 (CORS)を参照