このトピックでは、オブジェクトのアップロードまたはダウンロードリクエストにパラメーターを追加して、アップロードまたはダウンロードの帯域幅の制限を設定する方法について説明します。これにより、他のアプリケーションに十分な帯域幅が確保されます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントが使用されています。 OSS と同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。 アクセス認証情報を設定する方法の詳細については、「アクセス認証情報を設定する」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスが作成されます。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「OSSClient インスタンスを設定する」をご参照ください。
サンプルコード
次のサンプルコードは、単純なアップロードとダウンロードに対して単一接続の帯域幅調整を設定する方法の例を示しています。
package main
import (
"log"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Failed to create credentials provider: %v", err)
}
// OSSClient インスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。実際のエンドポイントを指定してください。
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。実際のリージョンを指定してください。
options := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
options = append(options, oss.Region("yourRegion"))
// 署名アルゴリズムのバージョンを指定します。
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)
}
// バケットの名前を指定します。例:examplebucket。
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Failed to get bucket '%s': %v", bucketName, err)
}
// アップロードするローカルファイルの完全なパスを指定します。例:D:\\localpath\\examplefile.txt。
// ローカルファイルのパスを指定しない場合、ローカルファイルはサンプルプログラムが属するプロジェクトのパスからアップロードされます。
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()
// アップロードの帯域幅制限を指定します。パラメーターの値は数値である必要があります。デフォルト単位:bit/s。この例では、帯域幅制限は 5 MB/s に設定されています。
var traffic int64 = 41943040
// オブジェクトのアップロードの帯域幅調整を設定します。
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。
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)
}
// オブジェクトのダウンロードの帯域幅調整を設定します。
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例:exampledir/exampleobject.txt。次に、ローカルファイルの完全なパスを指定します。例: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")
}
一般的なシナリオ
参照
オブジェクトのアップロードに呼び出すことができる API 操作の詳細については、「PutObject」をご参照ください。
オブジェクトのダウンロードに呼び出すことができる API 操作の詳細については、「GetObjectToFile」をご参照ください。