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

:初期化

最終更新日:Feb 23, 2024

OSSClientは、バケットやオブジェクトなどのOSSリソースを管理するGo用のObject Storage Service (OSS) SDKのクライアントとして機能します。 OSS SDK for Goを使用してリクエストを開始する場合、OSSClientインスタンスを初期化し、ビジネス要件に基づいてデフォルトの設定項目を変更する必要があります。

前提条件

アクセス資格情報が設定されます。 詳細については、「アクセス資格情報の設定」をご参照ください。

OSSClientインスタンスの作成

V1署名アルゴリズムの使用

OSSエンドポイントを使用したOSSClientインスタンスの作成

次のサンプルコードは、OSSエンドポイントを使用してOSSClientインスタンスを作成する方法の例を示しています。 さまざまなリージョンのOSSエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

パッケージメイン

import (import (import)
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)
func main(){
    // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }    

    // Create an OSSClient instance. 
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
    client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    fmt.Printf("client :%# v\n", client)
} 

カスタムドメイン名を使用したOSSClientインスタンスの作成

次のサンプルコードは、カスタムドメイン名を使用してOSSClientインスタンスを作成する方法の例を示しています。 詳細については、「カスタムドメイン名をバケットのデフォルトドメイン名にマップする」をご参照ください。

重要

カスタムドメイン名を使用する場合、ossClient.listBucketsメソッドは使用できません。

パッケージメイン

import (import (import)
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)
func main(){
    // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }    

    // yourEndpointをバケットのカスタムドメイン名に設定します。 
    // oss.UseCnameをtrueに設定して、CNAMEを有効にします。 CNAMEは、カスタムドメイン名をバケットにマップするために使用されます。 
    client, err := oss.New("yourEndpoint", "", ", ", oss.SetCredentialsProvider(&provider),oss.UseCname(true))
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    fmt.Printf("client :%# v\n", client)
} 

V4署名アルゴリズムの使用 (推奨)

より安全なV4署名アルゴリズムを使用する場合は、エンドポイントのリージョン情報を指定し、初期化中にoss.AuthV4を宣言する必要があります。 OSS SDK for Go 3.0.2以降はV4署名をサポートしています。

次のサンプルコードは、V4署名アルゴリズムを使用してOSSエンドポイントを使用してOSSClientインスタンスを作成する方法の例を示しています。 V4署名アルゴリズムを使用して他の方法でOSSClientインスタンスを作成する場合は、次のサンプルコードを参照して変数を変更します。

パッケージメイン

import (import (import)
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)
func main(){
    // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数が設定されていることを確認してください。 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }    

    // Create an OSSClient instance. 
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
    // バケットが配置されているリージョンのエンドポイントを指定します。 
    client, err := oss.New("yourEndpoint", "", "", ", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region(" yourRegion "))
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    fmt.Printf("client :%# v\n", client)
} 

OSSClient インスタンスの設定

OSSClientインスタンスを使用して、プロキシサーバー、接続タイムアウト期間、最大接続数などのパラメーターを設定できます。 下表に、各パラメーターを説明します。

パラメーター

説明

メソッド

MaxIdleConns

アイドル接続の最大数。 デフォルト値:100

oss.MaxConns

MaxIdleConnsPerHost

サーバーのアイドル接続の最大数。 デフォルト値:100

oss.MaxConns

MaxConnsPerHost

サーバーの最大接続数。 デフォルトでは、このパラメーターは空です。

oss.MaxConns

ConnectTimeout

HTTP接続のタイムアウト期間。 単位は秒です。 デフォルト値は 10 です。 値0は、HTTP接続がタイムアウトしないことを示します。

oss. タイムアウト

ReadWriteTimeout

HTTP接続の読み取りまたは書き込みタイムアウト時間。 単位は秒です。 デフォルト値は 20 です。 値0は、HTTP接続がタイムアウトしないことを示します。

oss. タイムアウト

IsCname

カスタムドメイン名をエンドポイントとして使用できるかどうかを指定します。 デフォルトでは、カスタムドメイン名をエンドポイントとして使用することはできません。

oss.UseCname

UserAgent

User-Agentヘッダー。 デフォルト値: aliyun-sdk-go。

oss.UserAgent

ProxyHost

プロキシサーバーのIPアドレスとポートを有効にするかどうかを指定します。 有効な値:

  • true

  • false (デフォルト)

oss.AuthProxy

ProxyUser

プロキシサーバーへのログオンに使用されるユーザー名。

oss.AuthProxy

ProxyPassword

プロキシサーバーへのログインに使用されるパスワード。

oss.AuthProxy

RedirectEnabled

HTTPリダイレクトを有効にするかどうかを指定します。 有効な値:

  • true (デフォルト)

  • false

oss.RedirectEnabled

InsecureSkipVerify

SSLベースの認証を有効にするかどうかを指定します。 有効な値:

  • true (デフォルト)

  • false

oss.InsecureSkipVerify

IsEnableCRC

CRC-64を有効にするかどうかを指定します。 有効な値:

  • true (デフォルト)

  • false

    重要

    CRC-64を無効にしないことを推奨します。 CRC-64を無効にすると、オブジェクトのアップロードとダウンロード中にデータの整合性が影響を受ける可能性があります。

oss.EnableCRC

LogLevel

ログモード。 有効な値:

  • oss.LogOff

  • oss. デバッグ

  • oss. エラー

  • oss. 警告

  • oss.Info

oss.SetLogLevel

例:

パッケージメイン

import (import (import)
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func main() {  
   // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    // 接続数を10、サーバーのアイドル接続の最大数を20、サーバーの最大接続数を20に設定します。 
    conn := oss.MaxConns(10,20、20)
    // HTTP接続のタイムアウト時間を20に設定し、HTTP接続の読み取りまたは書き込みタイムアウト時間を60に設定します。 単位は秒です。 
    time := oss.Timeout(20,60)
    // カスタムドメイン名をエンドポイントとして使用できるかどうかを指定します。 デフォルトでは、カスタムドメイン名をエンドポイントとして使用することはできません。 
    cname := oss.UseCname(true)
    // User-Agentヘッダーを指定します。 デフォルト値: aliyun-sdk-go。 
    userAgent := oss.UserAgent("aliyun-sdk-go")
    // HTTPリダイレクトを有効にするかどうかを指定します。 デフォルト値:true 
    リダイレクト:= oss.RedirectEnabled(true)
    // SSLベースの認証を有効にするかどうかを指定します。 デフォルト値:false 
    verifySsl := oss.InsecureSkipVerify(false)
    // プロキシサーバのIPアドレスとポートを有効にするかどうかを指定します。 
    // proxy := oss.Proxy("yourProxyHost")
    // プロキシサーバーのIPアドレスとポート、およびプロキシサーバーへのログインに使用されるユーザー名とパスワードを指定します。 
    authProxy := oss.AuthProxy("yourProxyHost","yourProxyUserName","yourProxyPassword")
    // CRC-64を有効にします。 
    crc := oss.EnableCRC(true)
    // ログモードを指定します。 
    logLevel := oss.SetLogLevel(oss.LogOff)  
   
    client, err := oss.New("yourEndpoint", "" ", ", oss.SetCredentialsProvider(&provider),conn,time,cname,userAgent,authProxy,verifySsl,redirect,crc,logLevel)
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    fmt.Printf("%#v\n", client)


} 

要求コンテキストの設定

リクエストコンテキストを使用して、リクエストのライフサイクルを管理し、リクエストに関連するコンテキスト情報を渡すことができます。

次のコードは、リクエストコンテキストの設定方法の例を示しています。 OSS SDK for Go 2.2.9以降を使用して、リクエストコンテキストを設定できます。

パッケージメイン

import (import (import)
    「コンテキスト」
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
    「時間」
)

func main() {
    // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    // Create an OSSClient instance. 
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
    // Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 これらの資格情報を使用してOSSで操作を実行することは、リスクの高い操作です。 RAMユーザーを使用してAPI操作を呼び出したり、ルーチンのO&Mを実行することを推奨します。RAMユーザーを作成するには、RAMコンソールにログインします。 
    client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
    if err! =nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }
    // バケットの名前を指定します。 例: examplebucket. 
    bucketName := "examplebucket"

    bucket, err := client.Bucket(bucketName)
    if err! =nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
    }

    // リクエストコンテキストを設定します。 
    ctx := context.Background()
    // リクエストコンテキストの有効期限を指定します。 
    ctx, cancel := context.WithTimeout(ctx, 5 * time.Second)
    defer cancel()
    // ローカルファイルをOSSにアップロードします。 
    err = bucket.PutObjectFromFile("yourObjectName", "yourLocalFile", oss.WithContext(ctx))
    if err! =nil {
    select {
    case <-ctx.Done():
    fmt.Println (「リクエストキャンセルまたはタイムアウト」)
    default:
    fmt.Println("アップロード失敗、エラー:" 、err)
    }
    os.Exit(-1)
    }
    fmt.Println (「アップロード成功! 」)
}

次に何をすべきか

OSS SDK for Goを初期化した後、OSSClientインスタンスを使用してリクエストを開始できます。 詳細については、「OSS SDK For Goの使用開始方法」をご参照ください。