Context: I’m trying to make a POST request to a AWS lambda function written in python from JavaScript. I will then enter the information in the POST request into a Database.
Problem: I can’t seem to figure out how to get the information out of the POST request. and store it into variables.
I’ve tried to use the event[‘Username’] which in the testing simulation provided by AWS works although in practice doesn’t.
JavaScript
x
8
1
<form method="POST" action="https://fake.execute-api.us-east-1.amazonaws.com/Prod/RegisterUser">
2
<label for="Username">Username:</label><br>
3
<input type="text" id="Username" name="Username" value=""><br>
4
<label for="password">Password:</label><br>
5
<input type="text" id="Password" name="Password" value=""><br><br>
6
<input type="submit" id="submit" value="Submit" >
7
</form>
8
JavaScript
1
13
13
1
POST /Prod/RegisterUser HTTP/1.1
2
Host: fake.execute-api.us-east-1.amazonaws.com
3
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
5
Accept-Language: en-US,en;q=0.5
6
Accept-Encoding: gzip, deflate
7
Content-Type: application/x-www-form-urlencoded
8
Content-Length: 24
9
Connection: close
10
Upgrade-Insecure-Requests: 1
11
12
Username=jat&Password=sa
13
JavaScript
1
21
21
1
import pymysql
2
import json
3
4
#endpoint = 'fake.us-east-1.rds.amazonaws.com'
5
#username = 'admin'
6
#password = 'admin'
7
#database_name = 'fake'
8
9
#connection
10
#connection = pymysql.connect(endpoint, user=username, passwd=password, db=database_name)
11
12
def lambda_handler(event, context):
13
14
user = event['Username']
15
password = event['Password']
16
17
return {
18
"Username": user,
19
"Password":password
20
}
21
Advertisement
Answer
SOLVED:
I found that posting directly to the AWS Lambda wasn’t working because of the string format. The AWS Lambda requires JSON format with use of JSON.stringify().
JavaScript
1
8
1
<form onsubmit="submitData();return false;">
2
<label for="Username">Username:</label><br>
3
<input type="text" id="Username" name="Username" value=""><br>
4
<label for="password">Password:</label><br>
5
<input type="text" id="Password" name="Password" value=""><br><br>
6
<input type="submit" id="submit" value="Submit" >
7
</form>
8
JavaScript
1
19
19
1
function submitData() {
2
var user = document.getElementById("Username").value
3
var pass = document.getElementById("Password").value
4
var json = { Username: user, Password: pass };
5
$.ajax({
6
type: "POST",
7
url: "https://fake.execute-api.us-east-1.amazonaws.com/Prod/RegisterUser",
8
data: JSON.stringify(json),
9
beforeSend: function() {
10
console.log("Before");
11
$("#submit").attr('disabled', true);
12
},
13
success: function(response){
14
console.log(response);
15
$("#submit").attr('disabled', false);
16
}
17
});
18
}
19
JavaScript
1
10
10
1
import pymysql
2
import json
3
4
def lambda_handler(event, context):
5
resp = event
6
return {
7
"Username:": resp["Username"],
8
"Password": resp["Password"]
9
}
10