Retrieve the next work item for specified :code:`function_arn`.

        :param function_arn: Arn of the Lambda function intended to receive the work for processing.
        :type function_arn: string

        :returns: Next work item to be processed by the function.
        :type returns: WorkItem

def get_work(self, function_arn):
        """
        Retrieve the next work item for specified :code:`function_arn`.

        :param function_arn: Arn of the Lambda function intended to receive the work for processing.
        :type function_arn: string

        :returns: Next work item to be processed by the function.
        :type returns: WorkItem
        """
        url = self._get_work_url(function_arn)
        runtime_logger.info('Getting work for function [{}] from {}'.format(function_arn, url))

        request = Request(url)
        request.add_header(HEADER_AUTH_TOKEN, self.auth_token)

        response = urlopen(request)

        invocation_id = response.info().get(HEADER_INVOCATION_ID)
        client_context = response.info().get(HEADER_CLIENT_CONTEXT)

        runtime_logger.info('Got work item with invocation id [{}]'.format(invocation_id))
        return WorkItem(
            invocation_id=invocation_id,
            payload=response.read(),
            client_context=client_context)