diff --git a/moto/awslambda/models.py b/moto/awslambda/models.py index 28cbe61af..829aa76d2 100644 --- a/moto/awslambda/models.py +++ b/moto/awslambda/models.py @@ -1049,9 +1049,9 @@ class LambdaBackend(BaseBackend): if fn: payload = fn.invoke(body, headers, response_headers) response_headers["Content-Length"] = str(len(payload)) - return response_headers, payload + return payload else: - return response_headers, None + return None def do_validate_s3(): diff --git a/moto/awslambda/responses.py b/moto/awslambda/responses.py index d81bd55d9..a4f559fc2 100644 --- a/moto/awslambda/responses.py +++ b/moto/awslambda/responses.py @@ -178,7 +178,7 @@ class LambdaResponse(BaseResponse): function_name = unquote(self.path.rsplit("/", 2)[-2]) qualifier = self._get_param("qualifier") - response_header, payload = self.lambda_backend.invoke( + payload = self.lambda_backend.invoke( function_name, qualifier, self.body, self.headers, response_headers ) if payload: @@ -187,6 +187,8 @@ class LambdaResponse(BaseResponse): elif request.headers.get("X-Amz-Invocation-Type") == "DryRun": status_code = 204 else: + if request.headers.get("X-Amz-Log-Type") != "Tail": + del response_headers["x-amz-log-result"] status_code = 200 return status_code, response_headers, payload else: diff --git a/tests/test_awslambda/test_lambda.py b/tests/test_awslambda/test_lambda.py index 62e2bcef6..be5835b5f 100644 --- a/tests/test_awslambda/test_lambda.py +++ b/tests/test_awslambda/test_lambda.py @@ -113,6 +113,7 @@ def test_invoke_requestresponse_function(): FunctionName="testFunction", InvocationType="RequestResponse", Payload=json.dumps(in_data), + LogType="Tail" ) success_result["StatusCode"].should.equal(200) @@ -125,6 +126,16 @@ def test_invoke_requestresponse_function(): payload = success_result["Payload"].read().decode("utf-8") json.loads(payload).should.equal(in_data) + # Logs should not be returned by default, only when the LogType-param is supplied + success_result = conn.invoke( + FunctionName="testFunction", + InvocationType="RequestResponse", + Payload=json.dumps(in_data), + ) + + success_result["StatusCode"].should.equal(200) + assert "LogResult" not in success_result + @mock_lambda def test_invoke_requestresponse_function_with_arn():