Tous les produits
Search
Centre de documentation

Object Storage Service:Gérer les liens symboliques à l'aide du SDK OSS pour Go 2.0

Dernière mise à jour :Sep 24, 2026

Un lien symbolique permet d'accéder rapidement à un objet dans un bucket et facilite l'utilisation des objets fréquemment sollicités. Dans Object Storage Service (OSS), les liens symboliques fonctionnent comme des raccourcis sous Windows et vous permettent d'accéder rapidement aux objets associés. Cette rubrique explique comment configurer et interroger des liens symboliques à l'aide du SDK OSS pour Go.

Notes

  • L'exemple de code présenté dans cette rubrique utilise l'ID de région cn-hangzhou correspondant à la région Chine (Hangzhou). Par défaut, l'endpoint public est utilisé pour accéder aux ressources d'un bucket. Si vous souhaitez accéder aux ressources du bucket via d'autres services Alibaba Cloud situés dans la même région que ce dernier, utilisez un endpoint interne. Pour plus d'informations sur les régions et les endpoints pris en charge par Object Storage Service (OSS), consultez la page Régions et endpoints OSS.

  • Dans cette rubrique, les identifiants d'accès sont récupérés depuis des variables d'environnement. Pour savoir comment configurer ces identifiants, reportez-vous à la section Configurer les identifiants d'accès.

  • La création de liens symboliques nécessite l'autorisation oss:PutObject, tandis que leur interrogation requiert l'autorisation oss:GetObject. Pour en savoir plus, consultez la page Accorder une stratégie personnalisée aux utilisateurs RAM.

Méthodes

Configurer des liens symboliques

func (c *Client) PutSymlink(ctx context.Context, request *PutSymlinkRequest, optFns ...func(*Options)) (*PutSymlinkResult, error)

Interroger des liens symboliques

func (c *Client) GetSymlink(ctx context.Context, request *GetSymlinkRequest, optFns ...func(*Options)) (*GetSymlinkResult, error)

Paramètres de requête

Paramètre

Type

Description

ctx

context.Context

Contexte de la requête, permettant notamment de définir sa durée totale.

request

*PutSymlinkRequest

Paramètres de requête pour la configuration des liens symboliques. Pour plus de détails, consultez PutSymlinkRequest

*GetSymlinkRequest

Paramètres de requête pour l'interrogation des liens symboliques. Pour plus de détails, consultez GetSymlinkRequest

optFns

...func(*Options)

Facultatif. Paramètre au niveau de l'opération. Pour en savoir plus, consultez Options.

Valeurs de retour

Valeur

Type

Description

result

*PutSymlinkResult

Valeurs de retour lors de la configuration des liens symboliques. Ce paramètre est valide lorsque la valeur de err est nil. Pour plus d'informations, consultez RestoreObjectResult.

*GetSymlinkResult

Valeurs de retour lors de l'interrogation des liens symboliques. Ce paramètre est valide lorsque la valeur de err est nil. Pour plus d'informations, consultez GetSymlinkResult.

err

error

Statut de la requête. En cas d'échec, la valeur de err ne peut pas être nil.

Exemples de code

Configurer un lien symbolique

Le code suivant illustre la configuration d'un lien symbolique.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Specify the global variables.
var (
	region     string // The region in which the bucket is located.
	bucketName string // The name of the bucket.
	objectName string // The name of the object.
)

// Specify the init function used to initialize command line parameters.
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
	flag.StringVar(&objectName, "object", "", "The name of the object.")
}

func main() {
	// Parse command line parameters.
	flag.Parse()

	// Specify the name of the symlink.
	var (
		symlinkName = "testsymlink" // The name of the symlink.
	)

	// Check whether the region is specified.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Check whether the name of the bucket is specified.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check whether the name of the object is specified.
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, object name required")
	}

	// Check whether the name of the symlink is specified.
	if len(symlinkName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, symlink name required")
	}

	// Load the default configurations and specify the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client.
	client := oss.NewClient(cfg)

	// Create a request to configure the symlink.
	putRequest := &oss.PutSymlinkRequest{
		Bucket: oss.Ptr(bucketName),  // The name of the bucket
		Key:    oss.Ptr(symlinkName), // Specify the name of the symlink.
		Target: oss.Ptr(objectName),  // Specify the name of the object to which the symbolic link points.
	}

	// Execute the request to configure the symlink.
	putResult, err := client.PutSymlink(context.TODO(), putRequest)
	if err != nil {
		log.Fatalf("failed to put symlink %v", err)
	}

	// Display the result.
	log.Printf("put symlink result:%#v\n", putResult)
}

Interroger un lien symbolique

L'exemple ci-dessous montre comment interroger un lien symbolique ainsi que le nom de l'objet ciblé par ce lien.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Specify the global variables
var (
	region      string // The region in which the bucket is located.
	bucketName  string // The name of the bucket.
	symlinkName string // The name of the symlink.
)

// Specify the init function used to initialize command line parameters.
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
	flag.StringVar(&symlinkName, "symlink", "", "The name of the symlink.")
}

func main() {
	// Parse command line parameters.
	flag.Parse()

	// Check whether the region is specified.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Check whether the bucket name is specified.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check whether the symlink name is specified.
	if len(symlinkName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, symlink name required")
	}

	// Load the default configurations and specify the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client.
	client := oss.NewClient(cfg)

	// Create a request to query the symlink.
	getRequest := &oss.GetSymlinkRequest{
		Bucket: oss.Ptr(bucketName),  // The name of the bucket.
		Key:    oss.Ptr(symlinkName), // The name of the symlink.
	}

	// Execute the query operation and process the result.
	getResult, err := client.GetSymlink(context.TODO(), getRequest)
	if err != nil {
		log.Fatalf("failed to get symlink %v", err)
	}

	// Display the result.
	log.Printf("get symlink target object name:%#v\n", *getResult.Target)
}

Références

  • Pour consulter l'intégralité des exemples de code dédiés à la gestion des liens symboliques, rendez-vous sur les pages put_symlink.go et get_symlink.go.

  • Pour en savoir plus sur les opérations connexes, consultez la rubrique Liens symboliques.

  • Pour obtenir des informations détaillées sur l'opération API permettant de configurer des liens symboliques, consultez la documentation PutSymlink.

  • Pour obtenir des informations détaillées sur l'opération API permettant d'interroger des liens symboliques, consultez la documentation GetSymlink.