'Changes an attribute of an image.
:type snapshot_id: string
:param snapshot_id: The snapshot id you wish to change
:type attribute: string
:param attribute: The attribute you wish to change.  Valid values are:
createVolumePermission
:type operation: string
:param operation: Either add or remove (this is required for changing
snapshot ermissions)
:type user_ids: list
:param user_ids: The Amazon IDs of users to add/remove attributes
:type groups: list
:param groups: The groups to add/remove attributes.  The only valid
value at this time is \'all\'.
:type dry_run: bool
:param dry_run: Set to True if the operation should not actually run.'

def modify_snapshot_attribute(self, snapshot_id, attribute='createVolumePermission', operation='add', user_ids=None, groups=None, dry_run=False):

    params = {'SnapshotId': snapshot_id, 'Attribute': attribute, 'OperationType': operation}
    if user_ids:
        self.build_list_params(params, user_ids, 'UserId')
    if groups:
        self.build_list_params(params, groups, 'UserGroup')
    if dry_run:
        params['DryRun'] = 'true'
    return self.get_status('ModifySnapshotAttribute', params, verb='POST')
