OSSClientは、バケットやオブジェクトなどのObject Storage Service (OSS) リソースの管理に使用されるGoクライアントとして機能します。 OSS SDK for Goを使用してリクエストを開始するには、OSSClientインスタンスを初期化し、ビジネス要件に基づいてデフォルトの設定項目を変更する必要があります。
前提条件
アクセス資格情報が設定されます。 詳細については、「アクセス資格情報の設定」をご参照ください。
OSSClientインスタンスの作成
次の例では、デフォルト設定をロードしてOSSClientインスタンスを作成します。
package main
import (
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
var (
// In this example, the China (Hangzhou) region is used.
region = "cn-hangzhou"
// In this example, access credentials are obtained from environment variables.
provider credentials.CredentialsProvider = credentials.NewEnvironmentVariableCredentialsProvider()
)
// Specify the parameters of an OSS client.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(provider).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
}
cn-hangzhouやcn-shanghaiなど、リクエストを送信するリージョンを指定できます。 サポートされているリージョンの詳細については、「OSSリージョンとエンドポイント」をご参照ください。
OSS SDK for Goにはデフォルトのリージョンはありません。 設定を読み込むときにリージョンを明示的に指定するには、config.WithRegionパラメーターを指定する必要があります。
例:
cfg := oss.LoadDefaultConfig().WithRegion("cn-hangzhou")
OSS SDK for Go V2は、デフォルトでV4署名アルゴリズムを使用します。 この場合、regionパラメーターを指定する必要があります。
OSSClient インスタンスの設定
ほとんどの場合、デフォルト設定を使用するデフォルトのOSSClientはビジネス要件を満たすことができます。 OSSClientのデフォルト設定を変更したり、カスタムHTTPクライアントを使用して特定の環境のニーズを満たすこともできます。
共通設定
次のサンプルコードに示すように、configを使用して一般的な設定を変更できます。
cfg := oss.LoadDefaultConfig().
WithConnectTimeout(10 * time.Second).
UploadBandwidthlimit(10*1024)
共通設定パラメーター
リージョン | (必須) リクエストの送信先のリージョン。 | WithRegion("cn-hangzhou") |
CredentialsProvider | (必須) アクセス資格情報。 | WithCredentialsProvider (プロバイダー) |
エンドポイント | エンドポイント。 | WithEndpoint("oss-cn-hanghzou.aliyuncs.com") |
HttpClient | HTTPクライアント。 | WithHttpClient(customClient) |
RetryMaxAttempts | HTTP再試行の最大数。 デフォルト値:3 | WithRetryMaxAttempts (5) |
Retryer | HTTPリクエストの再試行設定。 | WithRetryer(customRetryer) |
ConnectTimeout | 接続を確立するためのタイムアウト期間。 既定値:5 単位は秒です。 | WithConnectTimeout (10 * time.Second) |
ReadWriteTimeout | アプリケーションがデータを読み書きするためのタイムアウト期間。 デフォルト値は 10 です。 単位は秒です。 | WithReadWriteTimeout (30 * time.Second) |
InsecureSkipVerify | SSL証明書の検証をスキップするかどうかを指定します。 デフォルトでは、SSL証明書が検証されます。 | WithInsecureSkipVerify(true) |
EnabledRedirect | HTTPリダイレクトを有効にするかどうかを指定します。 デフォルトでは、HTTPリダイレクトは無効になっています。 | WithEnabledRedirect(true) |
ProxyHost | プロキシサーバーを指定します。 | WithProxyHost(" http:// user:passswd@proxy.example-***.com ") |
ProxyFromEnvironment | 環境変数を使用してプロキシサーバーを指定します。 | WithProxyFromEnvironment(true) |
UploadBandwidthlimit | 合計アップロード帯域幅の上限。 単位: KiB/s。 | WithUploadBandwidthlimit(10*1024) |
ダウンロードBandwidthlimit | 合計ダウンロード帯域幅の上限。 単位: KiB/s。 | WithDownloadBandwidthlimit(10*1024) |
SignatureVersion | 署名のバージョン。 デフォルト値: v4 | WithSignatureVersion(oss.SignatureVersionV1) |
LogLevel | ログレベルを指定します。 | WithLogLevel(oss.LogInfo) |
LogPrinter | ログの印刷操作。 | WithLogPrinter(customPrinter) |
DisableSSL | リクエストにHTTPSを使用しないことを指定します。 HTTPSはデフォルトで使用されます。 | WithDisableSSL(true) |
UsePathStyle | パスリクエストスタイル。ルートドメイン名リクエストスタイルとも呼ばれます。 デフォルトでは、バケットのデフォルトドメイン名が使用されます。 | WithUsePathStyle(true) |
UseCName | カスタムドメイン名を使用してOSSにアクセスするかどうかを指定します。 デフォルトでは、カスタムドメイン名は使用されません。 | WithUseCName(true) |
UseDualStackEndpoint | デュアルスタックエンドポイントを使用してOSSにアクセスするかどうかを指定します。 デフォルトでは、デュアルスタックエンドポイントは使用されません。 | WithUseDualStackEndpoint(true) |
UseAccelerateEndpoint | OSSアクセラレーションエンドポイントを使用してOSSにアクセスするかどうかを指定します。 デフォルトでは、OSSアクセラレーションエンドポイントは使用されません。 | WithUseAccelerateEndpoint(true) |
UseInternalEndpoint | 内部エンドポイントを使用してOSSにアクセスするかどうかを指定します。 デフォルトでは、内部エンドポイントは使用されません。 | WithUseInternalEndpoint(true) |
DisableUploadCRC64Check | オブジェクトのアップロード中にCRC-64を無効にすることを指定します。 デフォルトでは、CRC-64は有効です。 | WithDisableUploadCRC64Check(true) |
DisableDownloadCRC64Check | オブジェクトのダウンロード中にCRC-64を無効にすることを指定します。 デフォルトでは、CRC-64は有効です。 | WithDisableDownloadCRC64Check(true) |
AdditionalHeaders | 追加の署名付きリクエストヘッダーを指定します。これは、V4署名アルゴリズムを使用する場合に有効です。 | WithAdditionalHeaders([]string{"content-length"}) |
UserAgent | 追加のユーザー-エージェント情報を指定します。 | WithUserAgent("user identifier") |
OSSClientのカスタマイズ
共通パラメーターが要件を満たさない場合は、WithHTTPClientを使用してデフォルトのHTTPクライアントを置き換えることができます。
package main
import (
"crypto/tls"
"net/http"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/transport"
)
func main() {
var (
// In this example, the China (Hangzhou) region is used.
region = "cn-hangzhou"
// In this example, access credentials are obtained from environment variables.
provider credentials.CredentialsProvider = credentials.NewEnvironmentVariableCredentialsProvider()
)
// Specify common timeout period or other parameters.
transConfig := transport.Config{
// Specify the timeout period for a connection. Default value: 5. Unit: seconds.
ConnectTimeout: oss.Ptr(10 * time.Second),
// Specify the timeout period for the application to read and write data. Default value: 10. Unit: seconds.
ReadWriteTimeout: oss.Ptr(20 * time.Second),
// Specify the timeout period for an idle connection. Default value: 50. Unit: seconds.
IdleConnectionTimeout: oss.Ptr(40 * time.Second),
// Specify the retention period of a network connection. Default value: 30. Unit: seconds.
KeepAliveTimeout: oss.Ptr(40 * time.Second),
// Specify whether to enable HTTP redirection. By default, HTTP redirection is disabled.
EnabledRedirect: oss.Ptr(true),
}
// Specify http.Transport parameters.
var transports []func(*http.Transport)
// Specify the maximum number of connections. Default value: 100.
transports = append(transports, transport.MaxConnections(200))
// If a request contains the Expect: 100-Continue header, it indicates the maximum period of time to wait for the first response header returned from the server after request headers are completely written. Default value: 1. Unit: seconds.
transports = append(transports, transport.ExpectContinueTimeout(2*time.Second))
// Specify the earliest version of Transport Layer Security (TLS). Default value: TLS 1.2.
transports = append(transports, transport.TLSMinVersion(tls.VersionTLS13))
// Specify whether to skip the SSL certificate verification. By default, the SSL certificate is verified.
transports = append(transports, transport.InsecureSkipVerify(true))
// For more information about configuring the Transport parameter, see https://pkg.go.dev/net/http#Transport
// Create a custom HTTP Client.
customClient := transport.NewHttpClient(&transConfig, transports...)
cfg := oss.LoadDefaultConfig().
WithHttpClient(customClient).
WithCredentialsProvider(provider).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
}
参照
詳細については、「開発者ガイド」をご参照ください。