'Create a snapshot of an existing EBS Volume.
:type volume_id: str
:param volume_id: The ID of the volume to be snapshot\'ed
:type description: str
:param description: A description of the snapshot.
Limited to 255 characters.
:type dry_run: bool
:param dry_run: Set to True if the operation should not actually run.
:rtype: :class:`boto.ec2.snapshot.Snapshot`
:return: The created Snapshot object'

def create_snapshot(self, volume_id, description=None, dry_run=False):

    params = {'VolumeId': volume_id}
    if description:
        params['Description'] = description[0:255]
    if dry_run:
        params['DryRun'] = 'true'
    snapshot = self.get_object('CreateSnapshot', params, Snapshot, verb='POST')
    volume = self.get_all_volumes([volume_id], dry_run=dry_run)[0]
    volume_name = volume.tags.get('Name')
    if volume_name:
        snapshot.add_tag('Name', volume_name)
    return snapshot
