前提・実現したいこと
Webサイトの登録フォームの処理プログラムをAWS Lambdaでpythonで作成しています。
HTMLで作成した登録フォームのデータがPOSTでAPI Gatewayを経由してLambdaに到着、処理を行います。元々は同期処理で作成していて、HTTPパラメータにリダイレクト先のURLが入っているので、この値をreturnさせ、API Gatewayがこれをキャッチして、サンクスページにリダイレクトするようにしていました。これを非同期処理にするのが実現したいことです。なお、このプログラムは特定のWebサイト向けに作ったものではなく、流用できるよう、サイト固有の情報はHTTPパラメータにのせています(リダイレクトURLなど)
発生している問題・エラーメッセージ
統合リクエストのHTTPヘッダーにX-Amz-Invocation-Type 'Event'を入れると非同期処理になりますが、returnがnullとなるため、任意のページにリダイレクトできません。
エラーメッセージ
該当のソースコード
ソースコード
import json
from time import sleep
from datetime import datetime
import urllib.parse
import boto3
def logging(errorLv, lambdaName, errorMsg):
loggingDateStr=(datetime.now()).strftime('%Y/%m/%d %H:%M:%S')
print(loggingDateStr + " " + lambdaName + " [" + errorLv + "] " + errorMsg)
return
def lambda_handler(event, context):
logging("info", context.function_name, "実行開始") logging("error", context.function_name, "エラーログテスト") print(event.keys()) print(event) request_body = event['body'] decoded_request_body = urllib.parse.unquote(request_body) parameters = urllib.parse.parse_qs(decoded_request_body) for i in list(parameters.keys()): parameters[i] = str(parameters[i][0]) exception_data = [ 'encoding', 'salesforce_url', 'redirect_url', 'reply_mail', 'from', 'subject', 'message_filename' ] print(parameters) return json.dumps('https://www.google.co.jp')
試したこと
統合リクエストでHTTPパラメータを拾って、統合レスポンスにパススルーすることを試していますがうまくいっていません。よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
あなたの回答
tips
プレビュー