Merge pull request #2704 from bblommers/bugfix/2642
Fix AWS Lambda status code on invoke
This commit is contained in:
commit
039656f84d
@ -184,7 +184,13 @@ class LambdaResponse(BaseResponse):
|
|||||||
function_name, qualifier, self.body, self.headers, response_headers
|
function_name, qualifier, self.body, self.headers, response_headers
|
||||||
)
|
)
|
||||||
if payload:
|
if payload:
|
||||||
return 202, response_headers, payload
|
if request.headers["X-Amz-Invocation-Type"] == "Event":
|
||||||
|
status_code = 202
|
||||||
|
elif request.headers["X-Amz-Invocation-Type"] == "DryRun":
|
||||||
|
status_code = 204
|
||||||
|
else:
|
||||||
|
status_code = 200
|
||||||
|
return status_code, response_headers, payload
|
||||||
else:
|
else:
|
||||||
return 404, response_headers, "{}"
|
return 404, response_headers, "{}"
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ def test_invoke_requestresponse_function():
|
|||||||
Payload=json.dumps(in_data),
|
Payload=json.dumps(in_data),
|
||||||
)
|
)
|
||||||
|
|
||||||
success_result["StatusCode"].should.equal(202)
|
success_result["StatusCode"].should.equal(200)
|
||||||
result_obj = json.loads(
|
result_obj = json.loads(
|
||||||
base64.b64decode(success_result["LogResult"]).decode("utf-8")
|
base64.b64decode(success_result["LogResult"]).decode("utf-8")
|
||||||
)
|
)
|
||||||
@ -188,6 +188,34 @@ def test_invoke_event_function():
|
|||||||
json.loads(success_result["Payload"].read().decode("utf-8")).should.equal(in_data)
|
json.loads(success_result["Payload"].read().decode("utf-8")).should.equal(in_data)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_lambda
|
||||||
|
def test_invoke_dryrun_function():
|
||||||
|
conn = boto3.client("lambda", _lambda_region)
|
||||||
|
conn.create_function(
|
||||||
|
FunctionName="testFunction",
|
||||||
|
Runtime="python2.7",
|
||||||
|
Role=get_role_name(),
|
||||||
|
Handler="lambda_function.lambda_handler",
|
||||||
|
Code={"ZipFile": get_test_zip_file1(),},
|
||||||
|
Description="test lambda function",
|
||||||
|
Timeout=3,
|
||||||
|
MemorySize=128,
|
||||||
|
Publish=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
conn.invoke.when.called_with(
|
||||||
|
FunctionName="notAFunction", InvocationType="Event", Payload="{}"
|
||||||
|
).should.throw(botocore.client.ClientError)
|
||||||
|
|
||||||
|
in_data = {"msg": "So long and thanks for all the fish"}
|
||||||
|
success_result = conn.invoke(
|
||||||
|
FunctionName="testFunction",
|
||||||
|
InvocationType="DryRun",
|
||||||
|
Payload=json.dumps(in_data),
|
||||||
|
)
|
||||||
|
success_result["StatusCode"].should.equal(204)
|
||||||
|
|
||||||
|
|
||||||
if settings.TEST_SERVER_MODE:
|
if settings.TEST_SERVER_MODE:
|
||||||
|
|
||||||
@mock_ec2
|
@mock_ec2
|
||||||
@ -216,7 +244,7 @@ if settings.TEST_SERVER_MODE:
|
|||||||
InvocationType="RequestResponse",
|
InvocationType="RequestResponse",
|
||||||
Payload=json.dumps(in_data),
|
Payload=json.dumps(in_data),
|
||||||
)
|
)
|
||||||
result["StatusCode"].should.equal(202)
|
result["StatusCode"].should.equal(200)
|
||||||
actual_payload = json.loads(result["Payload"].read().decode("utf-8"))
|
actual_payload = json.loads(result["Payload"].read().decode("utf-8"))
|
||||||
expected_payload = {"id": vol.id, "state": vol.state, "size": vol.size}
|
expected_payload = {"id": vol.id, "state": vol.state, "size": vol.size}
|
||||||
actual_payload.should.equal(expected_payload)
|
actual_payload.should.equal(expected_payload)
|
||||||
|
Loading…
Reference in New Issue
Block a user