All Products
Search
Document Center

Object Storage Service:Manage symbolic links (C# SDK V2)

Last Updated:Aug 06, 2025

The symbolic link feature lets you conveniently access frequently used objects in a bucket. After you create a symbolic link, you can use it to access an object in a way that is similar to a shortcut in Windows. This topic describes how to use the OSS C# SDK to create and obtain symbolic links.

Notes

  • The sample code in this topic uses the China (Hangzhou) region as an example. The region ID is cn-hangzhou. By default, a public endpoint is used. If you access OSS from other Alibaba Cloud products in the same region, use an internal endpoint. For more information about the mappings between OSS regions and endpoints, see OSS regions and endpoints.

  • To create a symbolic link, you must have the oss:PutObject permission. To obtain a symbolic link, you must have the oss:GetObject permission. For more information, see Grant custom access policies to RAM users.

Sample code

Create a symbolic link

You can use the following code to create a symbolic link.

using OSS = AlibabaCloud.OSS.V2;  // Create an alias for Alibaba Cloud OSS SDK to simplify subsequent use.

var region = "cn-hangzhou";  // Required. Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
var endpoint = null as string;  // Optional. Specify the domain name used to access OSS. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
var bucket = "your bucket name";  // Required. The bucket name.
var key = "your object name";  // Required. The object name.
var target = "your symlink name";  // Required. The symbolic link name.

// Load the default configurations of the OSS SDK. The configurations automatically read credential information (such as AccessKey) from environment variables.
var cfg = OSS.Configuration.LoadDefault();
// Explicitly set the use of environment variables to obtain credentials for identity verification (format: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET).
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Set the region of the bucket in the configuration.
cfg.Region = region;   
// If an endpoint is specified, it overwrites the default endpoint. 
if(endpoint != null) 
{
    cfg.Endpoint = endpoint;
} 

// Create an OSS client instance using the configuration information.
using var client = new OSS.Client(cfg); 

// Call the PutSymlinkAsync method to create a symbolic link that points to an object in the bucket.
var result = await client.PutSymlinkAsync(new()
{
    Bucket = bucket,
    Key = key,
    SymlinkTarget = target,
});

// Print the result.
Console.WriteLine("PutSymlink done");  // Indicate that the operation is complete.
Console.WriteLine($"StatusCode: {result.StatusCode}");  // HTTP status code.
Console.WriteLine($"RequestId: {result.RequestId}");  // The request ID, which is used for troubleshooting in Alibaba Cloud.
Console.WriteLine("Response Headers:");  // Response headers.
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));  // Traverse and print all response headers.

Obtain a symbolic link

You can use the following code to obtain a symbolic link.

using OSS = AlibabaCloud.OSS.V2;  // Create an alias for Alibaba Cloud OSS SDK to simplify subsequent use.

var region = "cn-hangzhou";  // Required. Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
var endpoint = null as string;  // Optional. Specify the domain name used to access OSS. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
var bucket = "your bucket name";  // Required. The bucket name.
var key = "your object name";  // Required. The object name.

// Load the default configurations of the OSS SDK. The configurations automatically read credential information (such as AccessKey) from environment variables.
var cfg = OSS.Configuration.LoadDefault();
// Explicitly set the use of environment variables to obtain credentials for identity verification (format: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET).
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Set the region of the bucket in the configuration.
cfg.Region = region;   
// If an endpoint is specified, it overwrites the default endpoint. 
if(endpoint != null) 
{
    cfg.Endpoint = endpoint;
} 

// Create an OSS client instance using the configuration information.
using var client = new OSS.Client(cfg); 

// Call the GetSymlinkAsync method to obtain the symbolic link information of the target object.
var result = await client.GetSymlinkAsync(new()
{
    Bucket = bucket,
    Key = key
});

// Print the result.
Console.WriteLine("GetSymlink done");  // Indicate that the operation is complete.
Console.WriteLine($"StatusCode: {result.StatusCode}");  // HTTP status code.
Console.WriteLine($"RequestId: {result.RequestId}");  // The request ID, which is used for troubleshooting in Alibaba Cloud.
Console.WriteLine("Response Headers:");  // Response headers.
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));  // Traverse and print all response headers.
Console.WriteLine($"SymlinkTarget: {result.SymlinkTarget}");  // Output the symbolic link information of the target object.

References

  • For the complete sample code on how to create a symbolic link, see PutSymlink.cs.

  • For the complete sample code on how to obtain a symbolic link, see GetSymlink.cs.