def put_destination(destinationName=None, targetArn=None, roleArn=None):
    """
    Creates or updates a destination. A destination encapsulates a physical resource (such as a Kinesis stream) and enables you to subscribe to a real-time stream of log events of a different account, ingested using  PutLogEvents . Currently, the only supported physical resource is a Amazon Kinesis stream belonging to the same account as the destination.
    A destination controls what is written to its Amazon Kinesis stream through an access policy. By default, PutDestination does not set any access policy with the destination, which means a cross-account user cannot call  PutSubscriptionFilter against this destination. To enable this, the destination owner must call  PutDestinationPolicy after PutDestination .
    See also: AWS API Documentation
    
    
    :example: response = client.put_destination(
        destinationName='string',
        targetArn='string',
        roleArn='string'
    )
    
    
    :type destinationName: string
    :param destinationName: [REQUIRED]
            A name for the destination.
            

    :type targetArn: string
    :param targetArn: [REQUIRED]
            The ARN of an Amazon Kinesis stream to deliver matching log events to.
            

    :type roleArn: string
    :param roleArn: [REQUIRED]
            The ARN of an IAM role that grants CloudWatch Logs permissions to call Amazon Kinesis PutRecord on the destination stream.
            

    :rtype: dict
    :return: {
        'destination': {
            'destinationName': 'string',
            'targetArn': 'string',
            'roleArn': 'string',
            'accessPolicy': 'string',
            'arn': 'string',
            'creationTime': 123
        }
    }
    
    
    """
    pass
