def METHOD_NAME(elastic_san_name: Optional[str] = None,
               resource_group_name: Optional[str] = None,
               volume_group_name: Optional[str] = None,
               volume_name: Optional[str] = None,
               opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetVolumeResult:
    """
    Get an Volume.
    :param str elastic_san_name: The name of the ElasticSan.
    :param str resource_group_name: The name of the resource group. The name is case insensitive.
    :param str volume_group_name: The name of the VolumeGroup.
    :param str volume_name: The name of the Volume.
    """
    __args__ = dict()
    __args__['elasticSanName'] = elastic_san_name
    __args__['resourceGroupName'] = resource_group_name
    __args__['volumeGroupName'] = volume_group_name
    __args__['volumeName'] = volume_name
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('azure-native:elasticsan/v20221201preview:getVolume', __args__, opts=opts, typ=GetVolumeResult).value
    return AwaitableGetVolumeResult(
        creation_data=pulumi.get(__ret__, 'creation_data'),
        id=pulumi.get(__ret__, 'id'),
        name=pulumi.get(__ret__, 'name'),
        size_gi_b=pulumi.get(__ret__, 'size_gi_b'),
        storage_target=pulumi.get(__ret__, 'storage_target'),
        system_data=pulumi.get(__ret__, 'system_data'),
        type=pulumi.get(__ret__, 'type'),
        volume_id=pulumi.get(__ret__, 'volume_id'))