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

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

最終更新日:Nov 09, 2025

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

注意事項

  • このトピックのサンプルコードでは、中国 (杭州) リージョンに対応するリージョン ID cn-hangzhou を使用します。 デフォルトでは、パブリックエンドポイントを使用してバケット内のリソースにアクセスします。 同じリージョン内の他の 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

オブジェクトの名前など、API 操作のパラメーター。詳細については、DeleteObjectRequest をご覧ください。

*DeleteMultipleObjectsRequest

削除するオブジェクトのリストなど、API 操作のパラメーター。詳細については、DeleteMultipleObjectsRequest をご覧ください。

optFns

...func(*Options)

オプション。操作レベルのパラメーター。詳細については、Options をご覧ください。

レスポンスパラメーター

戻りパラメーター

タイプ

説明

result

*DeleteObjectResult

操作に対するレスポンス。このパラメーターは、err の値が nil の場合に有効です。詳細については、DeleteObjectResult をご覧ください。

*GetObjectResult

操作に対するレスポンス。このパラメーターは、err の値が nil の場合に有効です。詳細については、DeleteMultipleObjectsResult をご覧ください。

err

error

リクエストのステータス。リクエストが失敗した場合、err の値は nil ではありません。

サンプルコード

単一オブジェクトの削除

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", "", "バケットが配置されているリージョン。")
	flag.StringVar(&bucketName, "bucket", "", "バケットの名前。")
	flag.StringVar(&objectName, "object", "", "オブジェクトの名前。")
}

func main() {
	// コマンドラインパラメーターを解析します。
	flag.Parse()

	// バケットの名前が指定されているかどうかを確認します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。バケット名が必要です。")
	}

	// リージョンが指定されているかどうかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンが必要です。")
	}

	// オブジェクトの名前が指定されているかどうかを確認します。
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。オブジェクト名が必要です。")
	}

	// デフォルトの構成を読み込み、認証情報プロバイダーとリージョンを指定します。
	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("オブジェクトの削除に失敗しました %v", err)
	}

	// 結果を表示します。
	log.Printf("オブジェクトの削除結果: %#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", "", "バケットが配置されているリージョン。")
	flag.StringVar(&bucketName, "bucket", "", "バケットの名前。")
	flag.StringVar(&objects, "objects", "", "オブジェクトの名前 (カンマ区切り)。")
}

func main() {
	// コマンドラインパラメーターを解析します。
	flag.Parse()

	// バケットの名前が指定されているかどうかを確認します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。バケット名が必要です。")
	}

	// リージョンが指定されているかどうかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。リージョンが必要です。")
	}

	// オブジェクト名のリストが指定されているかどうかを確認します。
	if len(objects) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーターです。オブジェクト名が必要です。")
	}

	// デフォルトの構成を読み込み、認証情報プロバイダーとリージョンを指定します。
	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), // バケットの名前。
		Objects: DeleteObjects,       // 削除するオブジェクトのリスト。
	}

	// リクエストを実行し、結果を処理します。
	result, err := client.DeleteMultipleObjects(context.TODO(), request)
	if err != nil {
		log.Fatalf("複数オブジェクトの削除に失敗しました %v", err)
	}

	// 結果を表示します。
	log.Printf("複数オブジェクトの削除結果: %#v\n", result)
}

関連情報

  • オブジェクトの削除に使用される完全なサンプルコードの詳細については、delete_object.godelete_mutiple_objects.go をご覧ください。

  • 単一オブジェクトの削除のために呼び出すことができる API 操作の詳細については、DeleteObject をご覧ください。

  • 複数オブジェクトの削除のために呼び出すことができる API 操作の詳細については、DeleteMultipleObjects をご覧ください。