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

:OSS SDK for Goを使用したオブジェクトのリスト

最終更新日:Feb 23, 2024

このトピックでは、バケット内の特定のディレクトリ内のすべてのオブジェクト、名前に特定のプレフィックスが含まれるオブジェクト、およびオブジェクトとサブディレクトリを一覧表示する方法について説明します。

使用上の注意

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。

  • オブジェクトを一覧表示するには、oss:ListObjects権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

  • v2.2.5以降のGo用OSS SDKは、RestoreInfoレスポンスパラメーターをサポートしています。

背景情報

GetBucket (ListObjects) またはGetBucketV2 (ListObjectsV2) 操作を呼び出して、一度に最大1,000個のオブジェクトをバケットに一覧表示できます。 さまざまなメソッドを使用してオブジェクトを一覧表示するようにパラメーターを設定できます。 たとえば、特定の開始位置からオブジェクトを一覧表示し、特定のディレクトリ内のオブジェクトとサブディレクトリを一覧表示し、ページごとにオブジェクトを一覧表示するようにパラメーターを設定できます。 GetBucket (ListObjects) 操作とGetBucketV2 (ListObjectsV2) 操作は、次の点で異なります。

  • GetBucket (ListObjects) 操作を呼び出してオブジェクトを一覧表示すると、オブジェクト所有者情報が応答に含まれます。

  • GetBucketV2 (ListObjectsV2) 操作を呼び出してオブジェクトを一覧表示する場合、fetchOwnerパラメーターを設定して、応答に所有者情報を含めるかどうかを指定できます。

    説明

    バージョン管理が有効なバケット内のオブジェクトを一覧表示するには、GetBucketV2 (ListObjectsV2) 操作を呼び出すことを推奨します。

次の表では、GetBucket (ListObjects) またはGetBucketV2 (ListObjectsV2) 操作を呼び出してオブジェクトを一覧表示するときに設定できるパラメーターについて説明します。

  • GetBucket (ListObjects)

    次の表に、GetBucket (ListObjects) 操作を呼び出してオブジェクトを一覧表示するときに設定できるパラメーターを示します。

    パラメーター

    説明

    区切り文字

    リストするオブジェクトを名前でグループ化するために使用される文字。 指定されたプレフィックスから区切り文字の最初の出現までの同じ文字列を名前に含むオブジェクトは、CommonPrefixes要素としてグループ化されます。

    プレフィックス

    一覧表示するオブジェクトの名前に含める必要があるプレフィックス。

    maxKeys

    返されるオブジェクトの最大数。 最大値は 1000 です。 デフォルト値:100

    マーカー

    リスト操作の開始位置。

    詳細については、「GetBucket (ListObjects) 」をご参照ください。

  • GetBucketV2 (ListObjectsV2)

    次の表に、GetBucketV2 (ListObjectsV2) 操作を呼び出してオブジェクトを一覧表示するときに設定できるパラメーターを示します。

    パラメーター

    説明

    プレフィックス

    一覧表示するオブジェクトの名前に含める必要があるプレフィックス。

    区切り文字

    リストするオブジェクトを名前でグループ化するために使用される文字。 指定されたプレフィックスから区切り文字の最初の出現までの同じ文字列を名前に含むオブジェクトは、CommonPrefixes要素としてグループ化されます。

    startAfter

    リスト操作の開始位置。

    fetchOwner

    レスポンスにオブジェクト所有者情報を含めるかどうかを指定します。 有効な値:

    • true: 応答にはオブジェクト所有者情報が含まれます。

    • false: レスポンスにオブジェクト所有者情報が含まれていません。

    詳細については、「ListObjectsV2 (GetBucketV2) 」をご参照ください。

単純なリストを使用してオブジェクトをリストする

  • GetBucket (ListObjects)

    次のサンプルコードは、GetBucket (ListObjects) 操作を呼び出して特定のバケット内の100のオブジェクトを一覧表示する方法の例を示しています。

    パッケージメイン
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    func HandleError (エラーエラー) {
        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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            HandleError(err)
        }
        // List all objects. 
        marker := ""
        for {
            lsRes, err := bucket.ListObjects(oss.Marker(marker))
            if err! =nil {
                HandleError(err)
            }
            // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
            for _, object := range lsRes.Objects {
                fmt.Println("Object Name: ", object.Key)
            }
            if lsRes.IsTruncated {
                marker = lsRes.NextMarker
            } else {
                break
            }
        }
    }
  • GetBucketV2 (ListObjectsV2)

    次のサンプルコードは、GetBucketV2 (ListObjectsV2) 操作を呼び出して、特定のバケット内の100のオブジェクトを一覧表示する方法の例を示しています。

    パッケージメイン
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    func HandleError (エラーエラー) {
        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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
             HandleError(err)
        }
        continueToken := ""
        for {
             lsRes, err := bucket.ListObjectsV2(oss.ContinuationToken(continueToken))
             if err! =nil {
                 HandleError(err)
              }
              // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
              for _, object := range lsRes.Objects {
                  fmt.Println(object.Key, object.Type, object.Size, object.ETag, object.LastModified, object.StorageClass)
              }
              if lsRes.IsTruncated {
                  continueToken = lsRes.NextContinuationToken
              } else {
                  break
              }
          }
    }

特定の数のオブジェクトを一覧表示する

  • GetBucket (ListObjects)

    次のサンプルコードは、GetBucket (ListObjects) 操作を呼び出して特定の数のオブジェクトを一覧表示する方法の例を示しています。

    パッケージメイン
    import (import (import)
        "fmt"
        "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 {
            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)
         }
         // バケットの名前を指定します。 
         bucketName := "yourBucketName"
         bucket, err := client.Bucket(bucketName)
         if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
          }
          // 一度に一覧表示できるオブジェクトの最大数を指定し、オブジェクトを一覧表示します。 
          lsRes, err := bucket.ListObjects(oss.MaxKeys(200))
          if err! =nil {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
          // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
          fmt.Println("Objects:", lsRes.Objects)
          for _, object := range lsRes.Objects {
              fmt.Println("Object:", object.Key)
          }
     }
  • GetBucketV2 (ListObjectsV2)

    次のサンプルコードは、GetBucketV2 (ListObjectsV2) 操作を呼び出して特定の数のオブジェクトを一覧表示する方法の例を示しています。

    パッケージメイン
    import (import (import)
         "fmt"
         "os"
         「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    func HandleError (エラーエラー) {
         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 {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
         // バケットの名前を指定します。 
         bucketName := "yourBucketName"
         bucket, err := client.Bucket(bucketName)
         if err! =nil {
             HandleError(err)
         }
         // MaxKeysパラメーターを設定して、一度に一覧表示できるオブジェクトの最大数を指定し、オブジェクトを一覧表示します。 
         lsRes, err := bucket.ListObjectsV2(oss.MaxKeys(200))
         if err! =nil {
             HandleError(err)
         }
         // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
         for _, object := range lsRes.Objects {
             fmt.Println(object.Key、object.Type、object.Size、object.ETag、object.LastModified、object.StorageClass、object.Owner.ID、object.Owner.DisplayName)
         }
     }

名前に特定のプレフィックスが含まれるオブジェクトのリスト

  • GetBucket (ListObjects)

    次のサンプルコードでは、GetBucket (ListObjects) 操作を呼び出して、名前に特定のプレフィックスが含まれるオブジェクトを一覧表示する方法の例を示します。

    パッケージメイン
    import (import (import)
        "fmt"
        "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 {
            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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
        // 名前に特定のプレフィックスが含まれるオブジェクトをリストします。 デフォルトでは、最大100個のオブジェクトが一覧表示されます。 
        lsRes, err := bucket.ListObjects(oss.Prefix("my-object-"))
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
        // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
        fmt.Println("Objects:", lsRes.Objects)
        for _, object := range lsRes.Objects {
            fmt.Println("Object:", object.Key)
        }
    }
  • GetBucketV2 (ListObjectsV2)

    次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出して、名前に特定のプレフィックスが含まれているオブジェクトを一覧表示する方法の例を示します。

    パッケージメイン
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    func HandleError (エラーエラー) {
        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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            HandleError(err)
        }
        // プレフィックスパラメーターをmy-object-に設定します。 
        lsRes, err := bucket.ListObjectsV2(oss.Prefix("my-object-"))
        if err! =nil {
            HandleError(err)
        }
        // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
        for _, object := range lsRes.Objects {
            fmt.Println(object.Key、object.Type、object.Size、object.ETag、object.LastModified、object.StorageClass、object.Owner.ID、object.Owner.DisplayName)
        }
    }

特定の開始位置からすべてのオブジェクトを一覧表示する

  • GetBucket (ListObjects)

    Markerパラメーターを設定して、リスト操作の開始位置を指定できます。 Markerパラメーターの値の後に名前がアルファベット順になっているすべてのオブジェクトが返されます。

    パッケージメイン
    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に設定します。 実際のエンドポイントを指定します。 
        client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
        if err! =nil {
             fmt.Println("Error:", err)
             os.Exit(-1)
        }
         // バケットの名前を指定します。 
            bucketName := "yourBucketName"
        if err! =nil {
             fmt.Println("Error:", err)
             os.Exit(-1)
        }
        marker := oss.Marker("")
        for {
             lsRes, err := bucket.ListObjects (マーカー)
             if err! =nil {
                 fmt.Println("Error:", err)
                 os.Exit(-1)
              }
              // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
             fmt.Println("Objects:", lsRes.Objects)
             for _, object := range lsRes.Objects {
                 fmt.Println("Object:", object.Key)
            }
            if lsRes.IsTruncated {
                 marker = oss.Marker(lsRes.NextMarker)
            }else{
                break
            }
        }
    }
  • GetBucketV2 (ListObjectsV2)

    StartAfterパラメーターを設定して、リスト操作の開始位置を指定できます。 StartAfterパラメータの値の後に名前がアルファベット順になっているすべてのオブジェクトが返されます。

    パッケージメイン
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    func HandleError (エラーエラー) {
        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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            HandleError(err)
        }
        // StartAfterパラメータの値の後に名前がアルファベット順になるオブジェクトを一覧表示するようにStartAfterパラメータを設定します。 デフォルトでは、最大100個のオブジェクトが一覧表示されます。 
        lsRes, err := bucket.ListObjectsV2(oss.StartAfter("my-object-"))
        if err! =nil {
            HandleError(err)
        }
        // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
        for _, object := range lsRes.Objects {
            fmt.Println(object.Key、object.Type、object.Size、object.ETag、object.LastModified、object.StorageClass、object.Owner.ID、object.Owner.DisplayName)
        }
    }

ページですべてのオブジェクトを一覧表示

  • GetBucket (ListObjects)

    次のサンプルコードでは、GetBucket (ListObjects) 操作を呼び出して、特定のバケット内のすべてのオブジェクトをページごとに一覧表示する方法の例を示します。

    パッケージメイン
    import (import (import)
        "fmt"
        "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 {
            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)
        }
       // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
        // ページごとにすべてのオブジェクトを一覧表示します。 各ページに最大100個のオブジェクトを一覧表示できるように指定します。 
        marker := oss.Marker("")
        for {
            lsRes, err := bucket.ListObjects(oss.MaxKeys(100), marker)
            if err! =nil {
                fmt.Println("Error:", err)
                os.Exit(-1)
            }
            // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
            fmt.Println("Objects:", lsRes.Objects)
            if lsRes.IsTruncated {
                marker = oss.Marker(lsRes.NextMarker)
            }else{
                break
            }
        }
    }
  • GetBucketV2 (ListObjectsV2)

    次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出して、特定のバケット内のすべてのオブジェクトをページごとに一覧表示する方法の例を示します。MaxKeysパラメーターを設定して、各ページに一覧表示できるオブジェクトの最大数を指定できます。

    パッケージメイン
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    func HandleError (エラーエラー) {
        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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            HandleError(err)
        }
        // ページごとにすべてのオブジェクトを一覧表示します。 各ページに最大100個のオブジェクトを一覧表示できるように指定します。 
        continueToken := ""
        for {
            lsRes, err := bucket.ListObjectsV2(oss.MaxKeys(100), oss.ContinuationToken(continueToken))
            if err! =nil {
                HandleError(err)
            }
            // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
            for _, object := range lsRes.Objects {
                fmt.Println(object.Key, object.Type, object.Size, object.ETag, object.LastModified, object.StorageClass)
            }
            if lsRes.IsTruncated {
                continueToken = lsRes.NextContinuationToken
            } else {
                break
            }
        }
    }

名前に特定のプレフィックスが含まれるオブジェクトをページごとにリストする

  • GetBucket (ListObjects)

    次のサンプルコードでは、GetBucket (ListObjects) 操作を呼び出して、名前に特定のプレフィックスが含まれているオブジェクトをページごとに一覧表示する方法の例を示します。 MaxKeysパラメーターを設定して、各ページに一覧表示できるオブジェクトの最大数を指定できます。

    パッケージメイン
    import (import (import)
        "fmt"
        "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 {
            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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
        // 名前に特定のプレフィックスが含まれるオブジェクトをページ単位でリストします。 各ページに最大80個のオブジェクトを一覧表示できるように指定します。 
        prefix := oss.Prefix("my-object-")
        marker := oss.Marker("")
        for {
            lsRes, err := bucket.ListObjects(oss.MaxKeys(80), marker, prefix)
            if err! =nil {
                fmt.Println("Error:", err)
                os.Exit(-1)
            }
            // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
            fmt.Println("Objects:", lsRes.Objects)
            if lsRes.IsTruncated {
                prefix = oss.Prefix(lsRes.Prefix)
                marker = oss.Marker(lsRes.NextMarker)
            }else{
                break
            }
        }
    }
  • GetBucketV2 (ListObjectsV2)

    次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出して、名前に特定のプレフィックスが含まれているオブジェクトをページごとに一覧表示する方法の例を示します。 MaxKeysパラメーターを設定して、各ページに一覧表示できるオブジェクトの最大数を指定できます。

    パッケージメイン
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    func HandleError (エラーエラー) {
        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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            HandleError(err)
        }
        // 名前に特定のプレフィックスが含まれるオブジェクトをページ単位でリストします。 各ページに最大80個のオブジェクトを一覧表示できるように指定します。 
        prefix := oss.Prefix("my-object-")
        continueToken := ""
        for {
            lsRes、err := bucket.ListObjectsV2 (プレフィックス、oss.MaxKeys(80) 、oss.ContinuationToken(continueToken))
            if err! =nil {
                HandleError(err)
            }
            // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
            for _, object := range lsRes.Objects {
                fmt.Println(object.Key, object.Type, object.Size, object.ETag, object.LastModified, object.StorageClass)
            }
            if lsRes.IsTruncated {
                continueToken = lsRes.NextContinuationToken
                prefix = oss.Prefix(lsRes.Prefix)
            } else {
                break
            }
        }
    }

特定のディレクトリ内のすべてのオブジェクトに関する情報を一覧表示する

  • GetBucket (ListObjects)

    次のサンプルコードでは、GetBucket (ListObjects) 操作を呼び出して、オブジェクトサイズ、最終変更時刻、オブジェクト名など、特定のディレクトリ内のすべてのオブジェクトに関する情報を一覧表示する方法の例を示します。

    パッケージメイン
    import (import (import)
        "fmt"
        "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 {
            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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
        // オブジェクトをトラバースします。 
        marker := oss.Marker("")
        プレフィックス:= oss. prefix ("test")
        for {
            lor, err := bucket.ListObjects(marker, prefix)
            if err! =nil {
               fmt.Println("Error:", err)
               os.Exit(-1)
            }
            _, object := range lor.Objects {
               fmt.Println(object.Key, object.Type, object.Size, object.ETag, object.LastModified, object.StorageClass)
          }
          if lor.IsTruncated {
               prefix = oss.Prefix(lor.Prefix)
               marker = oss.Marker(lor.NextMarker)
          }else{
              break
          }
      }
    }
  • GetBucketV2 (ListObjectsV2)

    次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出して、オブジェクトサイズ、最終変更時刻、オブジェクト名など、特定のディレクトリ内のすべてのオブジェクトに関する情報を一覧表示する方法の例を示します。

    パッケージメイン
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    func HandleError (エラーエラー) {
        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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            HandleError(err)
        }
        continueToken := ""
        プレフィックス:= oss. prefix ("fun")
        for {
            lsRes, err := bucket.ListObjectsV2 (プレフィックス、oss.ContinuationToken(continueToken))
             if err! =nil {
                HandleError(err)
            }
            // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
            for _, object := range lsRes.Objects {
               fmt.Println(object.Key, object.Type, object.Size, object.ETag, object.LastModified, object.StorageClass)
            }
            if lsRes.IsTruncated {
               continueToken = lsRes.NextContinuationToken
               prefix = oss.Prefix(lsRes.Prefix)
          } else {
             break
          }
       }
    }

特定のディレクトリ内のすべてのサブディレクトリに関する情報を一覧表示する

  • GetBucket (ListObjects)

    次のサンプルコードでは、GetBucket (ListObjects) 操作を呼び出して、特定のディレクトリ内のすべてのサブディレクトリに関する情報を一覧表示する方法の例を示します。

    パッケージメイン
    import (import (import)
         "fmt"
         "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 {
            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)
        }
         // バケットの名前を指定します。 
         bucketName := "yourBucketName"
         bucket, err := client.Bucket(bucketName)
         if err! =nil {
             fmt.Println("Error:", err)
             os.Exit(-1)
         }
         marker := oss.Marker("")
         プレフィックス:= oss. prefix ("yourDirPrefix")
         for {
             lor, err := bucket.ListObjects(marker, prefix, oss.Delimiter("/"))
             if err! =nil {
                 fmt.Println("Error:", err)
                 os.Exit(-1)
             }
             for _, dirName := range lor.CommonPrefixes {
                 fmt.Println(dirName)
             }
             if lor.IsTruncated {
                 prefix = oss.Prefix(lor.Prefix)
                 marker = oss.Marker(lor.NextMarker)
             }else{
                 break
             }
         }
     }
  • GetBucketV2 (ListObjectsV2)

    次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出して、特定のディレクトリ内のすべてのサブディレクトリに関する情報を一覧表示する方法の例を示します。

    パッケージメイン
    import (import (import)
        "fmt"
        "os"
        「github.com/aliyun/aliyun-oss-go-sdk/oss」
    )
    func HandleError (エラーエラー) {
        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)
        }
        // バケットの名前を指定します。 
        bucketName := "yourBucketName"
        bucket, err := client.Bucket(bucketName)
        if err! =nil {
            HandleError(err)
        }
        continueToken := ""
        プレフィックス:= oss. prefix ("")
        for {
          lsRes, err := bucket.ListObjectsV2 (プレフィックス、oss.ContinuationToken(continueToken) 、oss.Delimiter("/"))
          if err! =nil {
              HandleError(err)
           }
          for _, dirName := range lsRes.CommonPrefixes {
              fmt.Println(dirName)
          }
          if lsRes.IsTruncated {
              prefix = oss.Prefix(lsRes.Prefix)
              continueToken = lsRes.NextContinuationToken
          } else {
              break
          }
       }
    }

オブジェクトとその所有者情報の一覧表示

次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出してオブジェクトとその所有者情報を一覧表示する方法の例を示します。

パッケージメイン
import (import (import)
    "fmt"
    "os"
    「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func HandleError (エラーエラー) {
    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)
    }
    // バケットの名前を指定します。 
    bucketName := "yourBucketName"
    bucket, err := client.Bucket(bucketName)
    if err! =nil {
        HandleError(err)
    }
    // 所有者情報を取得します。 
    lsRes, err := bucket.ListObjectsV2(oss.FetchOwner(true))
    if err! =nil {
        HandleError(err)
    }
    // リストされたオブジェクトを表示します。 デフォルトでは、一度に最大100個のオブジェクトが返されます。 
    for _, object := range lsRes.Objects {
        fmt.Println(object.Key, object.Owner.ID, object.Owner.DisplayName)
    }
}

ディレクトリ

OSSはフラット構造を使用してオブジェクトを格納します。 ディレクトリは、名前がスラッシュ (/) で終わるゼロバイトのオブジェクトです。 このオブジェクトをアップロードおよびダウンロードできます。 デフォルトでは、名前がスラッシュ (/) で終わるオブジェクトは、OSSコンソールにディレクトリとして表示されます。 ディレクトリ作成の完全なサンプルコードについては、『GitHub』をご参照ください。

デリミタとプレフィックスパラメータを指定して、ディレクトリごとにオブジェクトを一覧表示できます。

  • リクエストでプレフィックスをディレクトリ名に設定すると、プレフィックスを含む名前のオブジェクトとサブディレクトリが一覧表示されます。

  • リクエストでプレフィックスを指定し、区切り文字をスラッシュ (/) に設定すると、ディレクトリ内で指定されたプレフィックスで始まる名前のオブジェクトとサブディレクトリが一覧表示されます。 各サブディレクトリは、CommonPrefixesで単一の結果要素としてリストされます。 これらのサブディレクトリ内のオブジェクトおよびディレクトリはリストされません。

バケットにoss.jpgfun/test.jpgfun/movie/001.avifun/movie/007.aviのオブジェクトが含まれているとします。 ディレクトリ区切り文字としてスラッシュ (/) を指定します。 次の例では、シミュレートされたディレクトリにオブジェクトを一覧表示します。

  • バケット内のすべてのオブジェクトの一覧表示

    • 次のサンプルコードは、GetBucket (ListObjects) 操作を呼び出してバケット内のすべてのオブジェクトを一覧表示する方法の例を示しています。

      パッケージメイン
      import (import (import)
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "os"
      )
      func HandleError (エラーエラー) {
          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)
              os.Exit(-1)
          }
          // バケットの名前を指定します。 
          bucketName := "yourBucketName"
          bucket,err := client.Bucket(bucketName)
          if err! =nil {
              HandleError(err)
              os.Exit(-1)
          }
          // List all objects in the bucket. 
          marker := oss.Marker("")
          for {
              lsRes, err := bucket.ListObjects (マーカー)
              if err! =nil {
                  HandleError(err)
                  os.Exit(-1)
              }
              _,object := range lsRes.Objects {
                  fmt.Println("Bucket",object.Key)
              }
              if lsRes.IsTruncated {
                  marker = oss.Marker(lsRes.NextMarker)
              }else{
                  break
              }
          }
      }
    • 次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出してバケット内のすべてのオブジェクトを一覧表示する方法の例を示します。

      パッケージメイン
      import (import (import)
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "os"
      )
      func HandleError (エラーエラー) {
          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)
              os.Exit(-1)
          }
          // バケットの名前を指定します。 
          bucketName := "yourBucketName"
          bucket,err := client.Bucket(bucketName)
          if err! =nil {
              HandleError(err)
              os.Exit(-1)
          }
          // List all objects in the bucket. 
          startAfter := ""
          continueToken := ""
          for {
              lsRes, err := bucket.ListObjectsV2(oss.StartAfter(startAfter),oss.ContinuationToken(continueToken))
              if err! =nil {
                  HandleError(err)
                  os.Exit(-1)
              }
              _,object := range lsRes.Objects {
                  fmt.Println("Bucket",object.Key)
              }
              if lsRes.IsTruncated {
                  startAfter = lsRes.StartAfter
                  continueToken = lsRes.NextContinuationToken
             }else{
                  break
            }
         }
      }
    • 上記の2つの操作を呼び出してバケット内のすべてのオブジェクトを一覧表示すると、次のレスポンスが返されます。

      オブジェクト:
      楽しい /ムービー /001.avi
      楽しい /ムービー /007.avi
      楽しい /test.jpg
      oss.jpg
      CommonPrefixes: 
  • 特定のディレクトリ内のすべてのオブジェクトを一覧表示する

    • 次のサンプルコードは、GetBucket (ListObjects) 操作を呼び出して、特定のディレクトリ内のすべてのオブジェクトを一覧表示する方法の例を示しています。

      パッケージメイン
      import (import (import)
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "os"
      )
      func HandleError (エラーエラー) {
          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 {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
          // バケットの名前を指定します。 
          bucket, err := client.Bucket("yourBucketName")
          if err! =nil {
              HandleError(err)
              os.Exit(-1)
          }
          // ディレクトリ内のすべてのオブジェクトを一覧表示します。 
          プレフィックス:= oss. prefix ("aaa/db-init")
          marker := oss.Marker("")
          for {
              lsRes, err := bucket.ListObjects (プレフィックス、マーカー)
              if err! =nil {
                  HandleError(err)
                  os.Exit(-1)
              }
              _,object := range lsRes.Objects {
                  fmt.Println("Bucket",object.Key)
              }
              if lsRes.IsTruncated {
                  prefix = oss.Prefix(lsRes.Prefix)
                  marker = oss.Marker(lsRes.NextMarker)
              }else{
                  break
            }
         }
      }
    • 次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出して、特定のディレクトリ内のすべてのオブジェクトを一覧表示する方法の例を示します。

      パッケージメイン
      import (import (import)
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "os"
      )
      func HandleError (エラーエラー) {
          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 {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
          // バケットの名前を指定します。 
          bucket, err := client.Bucket("yourBucketName")
          if err! =nil {
              HandleError(err)
              os.Exit(-1)
          }
          // ディレクトリ内のすべてのオブジェクトを一覧表示します。 
          プレフィックス:= oss. prefix ("aaa/db-init")
          continueToken := ""
          for {
              lsRes, err := bucket.ListObjectsV2 (プレフィックス、oss.ContinuationToken(continueToken))
              if err! =nil {
                 HandleError(err)
                 os.Exit(-1)
              }
              _,object := range lsRes.Objects {
                 fmt.Println("Bucket",object.Key)
              }
              if lsRes.IsTruncated {
                 prefix = oss.Prefix(lsRes.Prefix)
                 continueToken = lsRes.NextContinuationToken
              }else{
                 break
             }
          }
      }
    • 上記の2つの操作を呼び出して、特定のディレクトリ内のすべてのオブジェクトを一覧表示すると、次の応答が返されます。

      オブジェクト:
      楽しい /ムービー /001.avi
      楽しい /ムービー /007.avi
      楽しい /test.jpg
      CommonPrefixes: 
  • ディレクトリ内のオブジェクトとサブディレクトリの一覧表示

    • 次のサンプルコードでは、GetBucket (ListObjects) 操作を呼び出して、特定のディレクトリ内のオブジェクトとサブディレクトリを一覧表示する方法の例を示します。

      パッケージメイン
      import (import (import)
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "os"
      )
      func HandleError (エラーエラー) {
          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 {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
          // バケットの名前を指定します。 
          bucket, err := client.Bucket("yourBucketName")
          if err! =nil {
              HandleError(err)
              os.Exit(-1)
          }
          // ディレクトリ内のオブジェクトとサブディレクトリを一覧表示します。 
          プレフィックス:= oss. prefix ("aaa/db-init/")
          marker := oss.Marker("")
          delimiter := "/"
          for {
          lsRes, err := bucket.ListObjects(prefix,marker,oss.Delimiter(delimiter))
          if err! =nil {
              HandleError(err)
              os.Exit(-1)
          }
          _,object := range lsRes.Objects {
              fmt.Println("Objects",object.Key)
          }
          for _,object := range lsRes.CommonPrefixes {
              fmt.Println("CommonPrefixes" 、オブジェクト)
          }
          if lsRes.IsTruncated {
              prefix = oss.Prefix(lsRes.Prefix)
              marker = oss.Marker(lsRes.NextMarker)
          }else{
             break
              }
           }
      }
    • 次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出して、特定のディレクトリ内のオブジェクトとサブディレクトリを一覧表示する方法の例を示します。

      パッケージメイン
      import (import (import)
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "os"
      )
      func HandleError (エラーエラー) {
          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 {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
          // バケットの名前を指定します。 
          bucket, err := client.Bucket("yourBucketName")
          if err! =nil {
              HandleError(err)
              os.Exit(-1)
          }
          // ディレクトリ内のオブジェクトとサブディレクトリを一覧表示します。 
          プレフィックス:= oss. prefix ("")
          continueToken := ""
          delimiter := "/"
          for {
              lsRes, err := bucket.ListObjectsV2(prefix,oss.Delimiter(delimiter),oss.ContinuationToken(continueToken))
              if err! =nil {
                 HandleError(err)
                 os.Exit(-1)
              }
              _,object := range lsRes.Objects {
                 fmt.Println("Objects",object.Key)
              }
              for _,object := range lsRes.CommonPrefixes {
                 fmt.Println("CommonPrefixes" 、オブジェクト)
              }
              if lsRes.IsTruncated {
                 prefix = oss.Prefix(lsRes.Prefix)
                 continueToken = lsRes.NextContinuationToken
              }else{
                 break
             }
          }
      }
    • 上記の2つの操作を呼び出して、特定のディレクトリ内のオブジェクトとサブディレクトリを一覧表示すると、次の応答が返されます。

      オブジェクト:
      楽しい /test.jpg
      
      CommonPrefixes:
      楽しい /映画 /
  • ディレクトリ内のオブジェクトのサイズを一覧表示する

    • 次のサンプルコードでは、GetBucket (ListObjects) 操作を呼び出して、特定のディレクトリ内のオブジェクトのサイズを一覧表示する方法の例を示します。

      パッケージメイン
      import (import (import)
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "os"
      )
      func HandleError (エラーエラー) {
          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 {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
          // バケットの名前を指定します。 
          bucket, err := client.Bucket("yourBucketName")
          if err! =nil {
              HandleError(err)
              os.Exit(-1)
          }
          // ディレクトリ内のオブジェクトのサイズを一覧表示します。 
          プレフィックス:= "test/"
          marker := ""
          for {
              lsRes, err := bucket.ListObjects(oss.Prefix(prefix),oss.Marker(marker))
              if err! =nil {
                 HandleError(err)
                 os.Exit(-1)
              }
              _,object := range lsRes.Objects {
                 fmt.Println("Objects",object.Key, "length",object.Size ,"Byte")
              }
              if lsRes.IsTruncated {
                 marker = lsRes.NextMarker
                 prefix = lsRes.Prefix
              }else{
                 break
              }
           }
      }
    • 次のサンプルコードでは、GetBucketV2 (ListObjectsV2) 操作を呼び出して、特定のディレクトリ内のオブジェクトのサイズを一覧表示する方法の例を示します。

      パッケージメイン
      import (import (import)
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "os"
      )
      func HandleError (エラーエラー) {
          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 {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
      
          // バケットの名前を照会します。 
          bucket, err := client.Bucket("yourBucketName")
          if err! =nil {
           HandleError(err)
           os.Exit(-1)
          }
          // ディレクトリ内のオブジェクトのサイズを一覧表示します。 
          プレフィックス:= oss. prefix ("/fun")
          continueToken := ""
          for {
          lsRes, err := bucket.ListObjectsV2 (プレフィックス、oss.ContinuationToken(continueToken))
          if err! =nil {
               HandleError(err)
               os.Exit(-1)
          }
          _,object := range lsRes.Objects {
               fmt.Println("Objects",object.Key, "length",object.Size ,"Byte")
          }
          if lsRes.IsTruncated {
                prefix = oss.Prefix(lsRes.Prefix)
                continueToken = lsRes.NextContinuationToken
          } else {
                break
          }
          }
      }

よくある質問

オブジェクトをリストするときに最後に変更された時刻に基づいてオブジェクトをソートできますか?

いいえ、オブジェクトをリストするときに最後に変更された時刻に基づいてオブジェクトを並べ替えることはできません。 最終変更時刻に基づいてオブジェクトをソートする必要がある場合は、データインデックス機能を使用することを推奨します。 詳細については、「データインデックス作成」をご参照ください。

参考資料

  • オブジェクトの一覧表示に使用する完全なサンプルコードについては、『GitHub』をご参照ください。

  • オブジェクトを一覧表示するために呼び出すAPI操作の詳細については、「GetBucket (ListObjects) 」および「ListObjectsV2(GetBucketV2) 」をご参照ください。