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

:エラー処理

最終更新日:Dec 19, 2023

このトピックでは、Object Storage Service (OSS) SDK for Goを使用するときのエラーのトラブルシューティング方法について説明します。

クライアントエラー

OSS SDK for Goを使用しているときにエラーが発生した場合は、エラーのトラブルシューティングに使用できる統合エラーインターフェイスが返されます。 次のサンプルコードは、エラーインターフェイスの例を示しています。

型エラーインターフェイス {
    エラー () 文字列
} 

このインターフェイスに基づいて、他の特定のエラーをトラブルシューティングできます。 次のコードは、HTTPリクエストエラーを返すために使用されるエラーインターフェイスの例を示しています。

// net. エラー
type Error interface {
    error
    Timeout() bool   // Is the error a timeout
    Temporary() bool // 一時的なエラーです
} 

サーバーエラー

OSS SDK for Goを使用しているときにリクエストエラーが発生した場合は、対応するエラーメッセージが返されます。 OSS SDK for Goで定義されているエラーは、HTTPリクエストエラーおよびI/Oリクエストエラーに対して返されます。 OSSサーバーがリクエストを処理するときにエラーが発生した場合、エラーインターフェイスの実装である次のサンプルコードが返されます。

型ServiceError struct {
    コード文字列 // OSSから返されたエラーコード。
    メッセージ文字列 // OSSによって提供されるエラーの詳細。
    RequestId文字列 // リクエストのUUID。
    HostId文字列 // アクセスされたOSSクラスターのホストID。
    StatusCode int // HTTPステータスコード。
}

OSSから返されるHTTPステータスコードが期待どおりでない場合、返されるレスポンスには、エラーインターフェイスの実装である次のサンプルコードが含まれます。

型UnexpectedStatusCodeError struct {
    allowed []int // OSSによって返される予想されるHTTPステータスコード。
    got int // OSSによって返される実際のHTTPステータスコード。
}

次のコードは、エラーの処理方法の例を示しています。

パッケージメイン
import (import (import)
    "fmt"
    "os"
    "strings"
    「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
// エラー処理の関数。 
func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}
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に設定します。 実際のエンドポイントを指定します。 
    client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
    if err! =nil {
        HandleError(err)
    }
    // バケットの名前を指定します。 例: examplebucket. 
    bucketName := "examplebucket"
    // オブジェクトの名前を指定します。 例: exampleobject.txt。 
    objectName := "exampleobject.txt"
    
    bucket, err := client.Bucket(bucketName)
    if err! =nil {
        HandleError(err)
    }
    // Upload a string. 
    err = bucket.PutObject(objectName, strings.NewReader("Hello OSS"))
    if err! =nil {
        HandleError(err)
   }
}

OSS エラーコード

次の表に、OSSエラーコードを示します。

エラーコード

説明

HTTPステータスコード

AccessDenied

アクセスが拒否されました。

403

BucketAlreadyExists

バケットが既に存在します。

409

BucketNotEmpty

バケットが空ではありません。

409

EntityTooLarge

エンティティサイズが上限を超えています。

400

EntityTooSmall

エンティティサイズが下限を下回っています。

400

FileGroupTooLarge

ファイルグループのサイズが上限を超えています。

400

InvalidLinkName

シンボリックリンクの名前は、シンボリックリンクが指すオブジェクトと同じです。

400

LinkPartNotExist

シンボリックリンクが指すオブジェクトは存在しません。

400

ObjectLinkTooLarge

シンボリックリンクが指すことができるオブジェクトの最大数に達しています。

400

FieldItemTooLong

POSTリクエストのすべてのフォームフィールドの合計長が制限を超えています。

400

FilePartInterity

パーツが変更されました。

400

FilePartNotExist

部品は存在しません。

400

FilePartStale

オブジェクトパーツは有効期限切れです。

400

IncorrectNumberOfFilesInPOSTRequest

POSTリクエストのファイル数が正しくありません。

400

InvalidArgument

パラメーターの形式が無効です。

400

InvalidAccessKeyId

AccessKey IDが存在しません。

403

InvalidBucketName

バケット名が無効です。

400

InvalidDigest

ダイジェストが無効です。

400

InvalidEncryptionAlgorithmError

暗号化アルゴリズムが無効です。

400

InvalidObjectName

オブジェクト名が無効です。

400

InvalidPart

パーツが無効です。

400

InvalidPartOrder

部品シーケンスが無効です。

400

InvalidPolicyDocument

ポリシー文書が無効です。

400

InvalidTargetBucketForLogging

ロギング中に無効な宛先バケットが見つかりました。

400

内部エラー

内部OSSエラーが発生しました。

500

MalformedXML

XML 形式が無効です。

400

MalformedPOSTRequest

POSTリクエストのボディが無効です。

400

MaxPOSTPreDataLengthExceededError

PostObjectリクエストのメッセージ本文 (アップロードするオブジェクトコンテンツを除く) が制限を超えています。

400

MethodNotAllowed

メソッドがサポートされていません。

405

MissingArgument

1つ以上の必須パラメーターが指定されていません。

411

MissingContentLength

コンテンツ長がありません。

411

NoSuchBucket

指定したバックアップは存在しません。

404

NoSuchKey

オブジェクトは存在しません。

404

NoSuchUpload

マルチパートアップロード ID が存在しません。

404

NotImplemented

そのメソッドは実装できません。

501

PreconditionFailed

前処理中にエラーが発生しました。

412

RequestTimeTooSkewed

OSSクライアントとOSSサーバーの時間偏差が15分を超えています。

403

RequestTimeout

リクエストがタイムアウトしました。

400

RequestIsNotMultiPartContent

POSTリクエストで指定されたcontent-typeの値が無効です。

400

SignatureDoesNotMatch

署名エラーが発生しました。

403

TooManyBuckets

ユーザーのバケット数が制限を超えています。

400

InvalidEncryptionAlgorithmError

暗号化アルゴリズムが無効です。

400

説明

上の表では、エラーコードはOssServiceError. codeパラメーターで指定されています。 HTTPステータスコードは、OssServiceError.StatusCodeパラメーターで指定されます。