すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSSClient インスタンスの設定

最終更新日:Dec 20, 2024

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-hangzhoucn-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)
}

参照

詳細については、「開発者ガイド」をご参照ください。