def _post_response()

in TerraformScripts/sc_terraform_wrapper/response_poster.py [0:0]


    def _post_response(self, status, arns=None, output_variables=None, state_file_location=None,
                       reason=''):
        print('Posting {} response to {}'.format(status, self.request['ResponseURL']))
        output_url = self.create_proxy_object()

        if status == 'FAILED' and self.request['RequestType'] == 'Update':
            # We ignore update-rollback request in the Lambda
            reason += '. Note that rollback will not be performed'

        response = {
            'Status' : status,
            'Reason' : reason + '. Terraform wrapper script output at: ' + output_url,
            'PhysicalResourceId' : self.request['PhysicalResourceId'],
            'StackId' : self.request['StackId'],
            'RequestId' : self.request['RequestId'],
            'LogicalResourceId' : self.request['LogicalResourceId'],
            'Data': {
                'ResourceArns': ",".join(arns) if arns else [],
                'TerraformScriptOutputLocation': output_url,
                'TerraformStateFileLocation' : state_file_location,
                'DryRunId': self.request['ResourceProperties'].get('DryRunId', ''),
                'Outputs': json.dumps(output_variables)
            },
        }

        r = requests.put(self.request['ResponseURL'], data=json.dumps(response), headers={'Content-Type': ''})
        if r.status_code != 200:
            print('Post response to {} failed with exit code {} because {}.'.format(self.request['ResponseURL'], r.status_code, r.raise_for_status()))