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

Object Storage Service:オブジェクトの削除 (Go SDK V2)

最終更新日:Apr 03, 2026

このトピックでは、Object Storage Service (OSS) の Go SDK を使用して、1つまたは複数のオブジェクトを削除する方法について説明します。

注意事項

  • このトピックのサンプルコードでは、中国 (杭州) リージョンの cn-hangzhou リージョン ID を使用しています。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから Object Storage Service (OSS) にアクセスするには、内部エンドポイントを使用します。OSS がサポートするリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

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

  • オブジェクトを削除するには、oss:DeleteObject 権限が必要です。詳細については、「RAM ユーザーへのカスタム権限ポリシーの付与」をご参照ください。

メソッドシグネチャ

単一オブジェクトの削除

func (c *Client) DeleteObject(ctx context.Context, request *DeleteObjectRequest, optFns ...func(*Options)) (*DeleteObjectResult, error)

複数オブジェクトの削除

func (c *Client) DeleteMultipleObjects(ctx context.Context, request *DeleteMultipleObjectsRequest, optFns ...func(*Options)) (*DeleteMultipleObjectsResult, error)

リクエストパラメーター

パラメーター

説明

ctx

context.Context

リクエストコンテキスト。リクエストタイムアウトを設定するために使用できます。

request

*DeleteObjectRequest

オブジェクト名などのリクエストパラメーターを指定します。詳細については、「DeleteObjectRequest」をご参照ください。

*DeleteMultipleObjectsRequest

削除するオブジェクトのリストなどのリクエストパラメーターを指定します。詳細については、「DeleteMultipleObjectsRequest」をご参照ください。

optFns

...func(*Options)

(オプション) オペレーションレベルの構成パラメーターを指定します。詳細については、「Options」をご参照ください。

レスポンスパラメーター

パラメーター

説明

result

*DeleteObjectResult

操作結果。このパラメーターは、errnil の場合にのみ有効です。詳細については、「DeleteObjectResult」をご参照ください。

*DeleteMultipleObjectsResult

操作結果。このパラメーターは、errnil の場合にのみ有効です。詳細については、「DeleteMultipleObjectsResult」をご参照ください。

err

error

リクエスト状態。リクエストが失敗した場合、errnil ではありません。

単一オブジェクトの削除

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// グローバル変数を定義します。
var (
	region     string // バケットのリージョン。
	bucketName string // バケット名。
	objectName string // オブジェクト名。
)

// init 関数はコマンドライン引数を初期化します。
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
	flag.StringVar(&objectName, "object", "", "The name of the object.")
}

func main() {
	// コマンドライン引数を解析します。
	flag.Parse()

	// バケット名が空であるかを確認します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// リージョンが空であるかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// オブジェクト名が空であるかを確認します。
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, object name required")
	}

	// デフォルトの構成をロードし、認証情報プロバイダーとリージョンを設定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// オブジェクトを削除するリクエストを作成します。
	request := &oss.DeleteObjectRequest{
		Bucket: oss.Ptr(bucketName), // バケット名。
		Key:    oss.Ptr(objectName), // オブジェクト名。
	}

	// オブジェクトを削除し、結果を処理します。
	result, err := client.DeleteObject(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to delete object %v", err)
	}

	// 結果を出力します。
	log.Printf("delete object result:%#v\n", result)
}

複数オブジェクトの削除

package main

import (
	"context"
	"flag"
	"log"
	"strings"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// グローバル変数を定義します。
var (
	region     string // バケットが配置されているリージョン。
	bucketName string // バケット名。
	objects    string // オブジェクト名 (カンマ区切り)。
)

// init 関数はコマンドライン引数を初期化します。
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
	flag.StringVar(&objects, "objects", "", "The name of the objects (comma-separated).")
}

func main() {
	// コマンドライン引数を解析します。
	flag.Parse()

	// バケット名が空であるかを確認します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// リージョンが空であるかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// オブジェクト名のリストが空であるかを確認します。
	if len(objects) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, objects name required")
	}

	// デフォルトの構成をロードし、認証情報プロバイダーとリージョンを設定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// オブジェクト名のカンマ区切り文字列をスライスに変換します。
	var DeleteObjects []oss.DeleteObject
	objectSlice := strings.Split(objects, ",")
	for _, name := range objectSlice {
		DeleteObjects = append(DeleteObjects, oss.DeleteObject{Key: oss.Ptr(strings.TrimSpace(name))})
	}

	// 複数オブジェクトを削除するリクエストを作成します。
	request := &oss.DeleteMultipleObjectsRequest{
		Bucket:  oss.Ptr(bucketName), // バケット名。
		Delete: &oss.Delete{
			Objects: DeleteObjects, // 削除するオブジェクトのリスト。
		},
	}

	// オブジェクトを削除し、結果を処理します。
	result, err := client.DeleteMultipleObjects(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to delete multiple objects %v", err)
	}

	// 結果を出力します。
	log.Printf("delete multiple objects result:%#v\n", result)
}

参考資料

  • オブジェクトを削除するための完全なサンプルコードについては、GitHub の delete_object.go および delete_multiple_objects.go の例をご参照ください。

  • 単一オブジェクトを削除するための API の詳細については、「DeleteObject」をご参照ください。

  • 複数オブジェクトを削除するための API の詳細については、「DeleteMultipleObjects」をご参照ください。