public void handleRequest()

in TerraformCustomResourceHandler/src/main/java/com/amazon/servicecatalog/terraform/customresource/TerraformRequestHandler.java [50:82]


    public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) {
        String requestString = toRequestString(inputStream);
        log.trace("Original unparsed input:\n" + requestString);

        SnsRecordContent recordContent;
        CustomResourceRequest request;
        try {
            recordContent = CustomResourceMarshaller.readSnsRecordContent(requestString, false);
            request = CustomResourceMarshaller.readCustomResourceRequest(recordContent, false);
        } catch (RuntimeException e) {
            log.error("Failed to parse request.", e);
            try {
                recordContent = CustomResourceMarshaller.readSnsRecordContent(requestString, true);
                request = CustomResourceMarshaller.readCustomResourceRequest(recordContent, true);
                ResponsePoster.postFailure(request, "Failed to parse request: " + e.getMessage());
            } catch (RuntimeException ex) {
                log.error("Unexpected error parsing request or posting failure response.", ex);
            }
            return;
        }

        try {
            // Best-effort validation so we don't send unnecessary commands to SSM
            TerraformResourceProperties properties = request.getResourceProperties();
            properties.validateFields();
            verifyNoCrossAccountAccess(properties, recordContent);
            CustomResourceMarshaller.verifySnsSignature(recordContent);
            handle(context, request);
        } catch (RuntimeException e) {
            ResponsePoster.postFailure(request, e.getMessage());
            log.error("Unexpected error encountered when handling the request.", e);
        }
    }