Cette rubrique explique comment ajouter des paramètres à une requête de téléversement ou de téléchargement d'objet pour définir une limite de bande passante. Cette configuration garantit que les autres applications disposent d'une bande passante suffisante.
Notes
Cette rubrique utilise le point de terminaison public de la région Chine (Hangzhou). Si vous souhaitez accéder à OSS depuis d'autres services Alibaba Cloud situés dans la même région, utilisez un point de terminaison interne. Pour plus d'informations sur les régions et les points de terminaison OSS, consultez Régions et points de terminaison.
Les identifiants d'accès utilisés dans cette rubrique sont obtenus à partir des variables d'environnement. Pour plus d'informations sur la configuration des identifiants d'accès, consultez Configurer les identifiants d'accès.
Cette rubrique montre comment créer une instance OSSClient avec un point de terminaison OSS. Pour d'autres configurations, telles que l'utilisation d'un domaine personnalisé ou l'authentification via des identifiants du Security Token Service (STS), consultez Configurer un client (SDK Go V1).
Exemple de code
L'exemple de code suivant montre comment configurer la limitation de la bande passante par connexion unique pour un téléversement et un téléchargement simples :
package main
import (
"log"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Failed to create credentials provider: %v", err)
}
// Create an OSSClient instance.
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. Specify your actual endpoint.
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou. Specify the actual region.
options := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
options = append(options, oss.Region("yourRegion"))
// Specify the version of the signature algorithm.
options = append(options, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", options...)
if err != nil {
log.Fatalf("Failed to create OSS client: %v", err)
}
// Specify the name of the bucket. Example: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Failed to get bucket '%s': %v", bucketName, err)
}
// Specify the full path of the local file that you want to upload. Example: D:\\localpath\\examplefile.txt.
// If you do not specify the path of the local file, the local file is uploaded from the path of the project to which the sample program belongs.
localFilePath := "D:\\localpath\\examplefile.txt"
fd, err := os.Open(localFilePath)
if err != nil {
log.Fatalf("Failed to open local file '%s': %v", localFilePath, err)
}
defer fd.Close()
// Specify the bandwidth limit for the upload. The value of the parameter must be a number. Default unit: bit/s. In this example, the bandwidth limit is set to 5 MB/s.
var traffic int64 = 41943040
// Configure bandwidth throttling for object upload.
// Specify the full path of the object. Do not include the bucket name in the full path.
objectName := "exampledir/exampleobject.txt"
err = bucket.PutObject(objectName, fd, oss.TrafficLimitHeader(traffic))
if err != nil {
log.Fatalf("Failed to upload object '%s': %v", objectName, err)
}
// Configure bandwidth throttling for object download.
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. Then, specify the full path of the local file. Example: D:\\localpath\\exampleobject.txt.
downloadFilePath := "D:\\localpath\\exampleobject.txt"
err = bucket.GetObjectToFile(objectName, downloadFilePath, oss.TrafficLimitHeader(traffic))
if err != nil {
log.Fatalf("Failed to download object '%s' to '%s': %v", objectName, downloadFilePath, err)
}
log.Println("Upload and download completed successfully")
}
Scénarios courants
Configurer la limitation de la bande passante par connexion unique pour un téléversement en plusieurs parties
Configurer la limitation de la bande passante pour un téléversement par ajout
Configurer la limitation de la bande passante pour les téléversements et téléchargements utilisant des URL signées
Références
Pour plus d'informations sur l'opération API permettant de téléverser un objet, consultez PutObject.
Pour plus d'informations sur l'opération API permettant de télécharger des objets, consultez GetObjectToFile.