AWS Lambdaでサーバー側の処理を実装する | AWSサーバレス構築 サーバレスバックエンド

ロードマップ

新規作成

関数を「一から作成」を選択して作成。ランタイムはプログラムを記述する言語を選択するところで、今回はPythonを選択

実行ロールは「基本的なLambdaアクセス権限で新しいロールを作成」を選択すると、Amazon CloudWatch Logs にログをアップロードするアクセス権限を持つIAMロールとポリシーが作成されて、CloudWatchLogsというサービスも自動で登録される。Lambdaの実行ログがCloudWatchに蓄積されるようになる。

f:id:dendouji:20210319174942p:plain

f:id:dendouji:20210319174956p:plain


記述例

  • lambda_handler関数の引数「event」に、コール元から渡されたjsonデータが含まれる

  • json.loads( jsonDataStr ) は、文字列をjson形式データ(辞書型データ)に変換

  • json.dumps( jsonData ) は、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)を参照