バケットは、オブジェクトを格納するコンテナーとして機能します。 オブジェクトはバケットに属します。

バケットを作成

バケット作成の完全なコードについては、『GitHub』をご参照ください。

次のコードを実行してバケットを作成します。

package main

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

func main() {
    // Create an OSSClient instance.
    client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Create a bucket. The default storage class and ACL of the created bucket are set to standard and private read respectively.
    err = client.CreateBucket("<yourBucketName>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
}
			

バケットの命名規則の詳細については、「基本概念」の「命名規則」をご参照ください。 「バケットレベルの権限」と「ストレージクラス」に示されるように、バケットを作成するときに ACL とストレージクラスを指定します。

次のコードを実行することで、指定された権限でバケットを作成します。

    // Create a bucket and set the bucket ACL to public read (which is private by default).
    err = client.CreateBucket("<yourBucketName>", oss.ACL(oss.ACLPublicRead))
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
			

次のコードを実行して、アーカイブクラスのバケットを作成します。

    err = client.CreateBucket("<yourBucketName>", oss.StorageClass(oss.StorageArchive))
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
			

次のコードを実行して、低頻度アクセスクラスのバケットを作成します。

    err = client.CreateBucket("<yourBucketName>", oss.StorageClass(oss.StorageIA))
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
			

バケットの一覧表示

バケットを一覧表示するコード全体については、『GitHub』をご参照ください。

  • すべてのバケットの一覧表示

    バケットはアルファベット順に表示されます。 すべてのバケットを一覧表示することも、特定の条件を満たすバケットを指定することもできます。

    次のコードを実行してすべてのバケットを一覧表示します。

    package main
    
    import (
        "fmt"
        "os"
        "github.com/aliyun/aliyun-oss-go-sdk/oss"
    )
    
    func main() {
        // Create an OSSClient instance.
        client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
        if err ! = nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // List all buckets.
        marker := ""
        for {
            lsRes, err := client.ListBuckets(oss.Marker(marker))
            if err ! = nil {
                fmt.Println("Error:", err)
                os.Exit(-1)
            }
    
            // 100 buckets are listed by default. 
            for _, bucket := range lsRes.Buckets {
                fmt.Println("Bucket: ", bucket.Name)
            }
    
            if lsRes.IsTruncated {
                marker = lsRes.NextMarker
            } else {
                break
            }
        }
    }
    					
  • 指定されたプレフィックスを持つバケットの一覧表示

    次のコードを実行して、指定したプレフィックスを持つバケットを一覧表示します。

    // List buckets by a specified prefix.
        lsRes, err = client.ListBuckets(oss.Prefix("<yourBucketPrefix>"))
        if err ! = nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
        // Print the bucket list.
        fmt.Println("Buckets with prefix: ", lsRes.Buckets)
        for _, bucket := range lsRes.Buckets {
            fmt.Println("Bucket with prefix: ", bucket.Name)
        }
  • marker によるバケットの一覧表示

    marker パラメーターの値はバケットの名前を表します。 次のコードを実行して、指定したバケット(marker の値) の後ろにあるバケットを一覧表示します。

        // List buckets after the specified marker.
        lsRes, err = client.ListBuckets(oss.Marker("<yourBucketMarker>"))
        if err ! = nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // Print the bucket list.
        fmt.Println("My buckets with marker :", lsRes.Buckets)
        for _, bucket := range lsRes.Buckets {
            fmt.Println("Bucket with marker: ", bucket.Name)
        }
    					
  • 指定した数のバケットの一覧表示

    次のコードを実行して、指定された数 (maxKeys) のバケットを一覧表示します。

        // Set the number of buckets that can be listed to 500. The default value is 100. The maximum value is 1,000.
        lsRes, err = client.ListBuckets(oss.MaxKeys(500))
        if err ! = nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        // Print the bucket list. 
        fmt.Println("My buckets max num:", lsRes.Buckets)
        for _, bucket := range lsRes.Buckets {
            fmt.Println("Bucket with maxKeys: ", bucket.Name)
        }
    					

バケットの存在有無の確認

次のコードを実行して、指定したバケットが存在するかどうかを確認します。

package main

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

func main() {
    // Create an OSSClient instance.
    client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Determine whether a bucket exists.
    isExist, err := client.IsBucketExist("<yourBucketName>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    fmt.Println("IsBucketExist result : ", isExist)
}
			

バケットの ACL を設定

バケットの ACL には、次の権限が含まれています。

権限 説明
Private バケット所有者と許可されたユーザーは、バケット内のオブジェクトを読み書きできます。 他のユーザーはオブジェクトに対して操作を実行できません。 oss.ACLPrivate
Public read バケット所有者と許可されたユーザーは、バケット内のオブジェクトを読み書きできます。 他のユーザーはバケット内のオブジェクトを読み取ることのみできます。 この許可は慎重に承認してください。 oss.ACLPublicRead
Public read-write 全てのユーザーはバケット内のオブジェクトを読み書きできます。 この許可は慎重に承認してください。 oss.ACLPublicReadWrite

ACL の詳細については、 「開発者ガイド」内の「アクセス制御」をご参照ください。 バケットの ACL 設定の完全なコードについては、『GitHub』をご参照ください。

次のコードを使用して、バケットの ACL を設定します。

package main

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

func main() {
    // Create an OSSClient instance.
    client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Set the ACL for the bucket to public read.
    err = client.SetBucketACL("<yourBucketName>", oss.ACLPublicRead)
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
}
			

バケットの ACL の取得

バケットの ACL を取得するには、次のコードを使用します。

package main

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

func main() {
    // Create an OSSClient instance.
    client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Obtain the ACL for the bucket
    aclRes, err := client.GetBucketACL("<yourBucketName>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    fmt.Println("Bucket ACL:", aclRes.ACL)
}
			

バケットのリージョンを取得

次のコードを実行して、バケットのリージョン (または保存先) を取得します。

package main

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

func main() {
    // Create an OSSClient instance.
    client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Obtain the region of the bucket:
    loc, err := client.GetBucketLocation("<yourBucketName>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    fmt.Println("Bucket Location:", loc)
}
			

バケット情報を取得

バケット情報を取得するには、次のコードを使用します。

package main

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

func main() {
    // Create an OSSClient instance.
    client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Bucket information includes regions (region or location), creation dates (CreationDate), permissions (ACL), owners (Owner), and storage class (StorageClass).
    res, err := client.GetBucketInfo("<yourBucketName>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    fmt.Println("BucketInfo.Location: ", res.BucketInfo.Location)
    fmt.Println("BucketInfo.CreationDate: ", res.BucketInfo.CreationDate)
    fmt.Println("BucketInfo.ACL: ", res.BucketInfo.ACL)
    fmt.Println("BucketInfo.Owner: ", res.BucketInfo.Owner)
    fmt.Println("BucketInfo.StorageClass: ", res.BucketInfo.StorageClass)
    fmt.Println("BucketInfo.ExtranetEndpoint: ", res.BucketInfo.ExtranetEndpoint)
    fmt.Println("BucketInfo.IntranetEndpoint: ", res.BucketInfo.IntranetEndpoint)
}
			

バケットの削除

バケットを削除する前に、バケット内のすべてのオブジェクト、およびマルチパートアップロードから生成されたフラグメントが削除されていることを確認してください。

マルチパートアップロードから生成されたフラグメントを削除するには、Bucket.ListMultipartUploads を使用してすべてのフラグメントを一覧表示してからBucket.AbortMultipartUpload を使用してフラグメントを削除します。 詳しくは、「マルチパートアップロード」をご参照ください。

次のコードを実行してバケットを削除します。

package main

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

func main() {
    // Create an OSSClient instance.
    client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Delete the bucket.
    err = client.DeleteBucket("<yourBucketName>")
    if err ! = nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
}