objectstorage

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 23, 2026 License: Apache-2.0 Imports: 9 Imported by: 9

README

object-storage-api-go

Go Reference Tests Go Report Card

Go言語向けのさくらのクラウド オブジェクトストレージAPIライブラリ

オブジェクトストレージAPIドキュメント: https://manual.sakura.ad.jp/cloud/objectstorage/api/api-json.html

概要

sacloud/object-storage-api-goはさくらのクラウド オブジェクトストレージAPIをGo言語から利用するためのAPIライブラリです。

利用イメージ:

import (
    "context"
    "os"
	
    objectstorage "github.com/sacloud/object-storage-api-go"
    "github.com/sacloud/saclient-go"
)

func main() {
	// デフォルトでusacloud互換プロファイル or 環境変数(SAKURA_ACCESS_TOKEN{_SECRET}が利用される
    var theClient saclient.Client
	ctx := context.Background()
	// サイトに依存しない処理にはFedClientを利用
	fedClient, err := objectstorage.NewFedClient(&theClient)
	if err != nil {
		panic(err)
	}

	// サイト一覧を取得
	siteOp := objectstorage.NewSiteOp(fedClient)
	sites, err := siteOp.List(ctx)
	if err != nil {
		panic(err)
	}
	siteId := sites[0].ID.Value

	// サイトに依存する処理にはSiteClientを利用
	siteClient, err := objectstorage.NewSiteClient(&theClient, siteId)
	if err != nil {
		panic(err)
	}

	// バケットの作成
	bucketName := "your-bucket-name"
	bucketOp := objectstorage.NewBucketOp(fedClient, siteClient)
	bucket, err := bucketOp.Create(ctx, &objectstorage.BucketCreateParams{
		Bucket: bucketName,
		SiteId: siteId,
	})

	// バケットの削除
	defer func() {
		if err := bucketOp.Delete(ctx, bucketName); err != nil {
			panic(err)
		}
	}()

	fmt.Println(bucket.Name.Value)
}

⚠ v1.0に達するまでは互換性のない形で変更される可能性がありますのでご注意ください。

関連プロジェクト
  • sacloud/sacloud-go: sacloud/object-storage-api-goを用いた高レベルAPIライブラリ

License

sacloud/object-storage-api-go Copyright (C) 2022-2026 The sacloud/object-storage-api-go Authors.

This project is published under Apache 2.0 License.

Documentation

Index

Constants

View Source
const (
	DefaultAPIRootURL = "https://secure.sakura.ad.jp/cloud/zone/is1a/api/objectstorage/1.0/"
)

Variables

View Source
var (
	// Version app version
	Version = "v0.2.0"
	// Revision git commit short commit hash
	Revision = "xxxxxx" // set on build time
)
View Source
var NewUserAgent = fmt.Sprintf(
	"object-storage-api-go/%s (%s/%s; +https://github.com/sacloud/object-storage-api-go)",
	Version,
	runtime.GOOS,
	runtime.GOARCH,
)

Functions

This section is empty.

Types

type AccountAPI

type AccountAPI interface {
	Create(ctx context.Context) (*v2.AccountData, error)
	Read(ctx context.Context) (*v2.AccountData, error)
	Delete(ctx context.Context) error

	ListAccessKeys(ctx context.Context) ([]v2.AccountKeysDataItem, error)
	// Secretはこの戻り値でのみ参照可能
	CreateAccessKey(ctx context.Context) (*v2.AccountKeyData, error)
	// Secretは常に空文字になっている
	ReadAccessKey(ctx context.Context, keyId string) (*v2.AccountKeyData, error)
	DeleteAccessKey(ctx context.Context, keyId string) error
}

func NewAccountOp

func NewAccountOp(client *SiteClient) AccountAPI

type BucketAPI

type BucketAPI interface {
	List(ctx context.Context) ([]v2.BucketListDataItem, error)
	Create(ctx context.Context, params *BucketCreateParams) (*v2.ModelBucket, error)
	Delete(ctx context.Context, bucketName string) error
}

func NewBucketOp

func NewBucketOp(fedClient *FedClient, siteClient *SiteClient) BucketAPI

type BucketCreateParams added in v0.1.0

type BucketCreateParams struct {
	Bucket string
	SiteId string
	Plan   string
}

type BucketExtraAPI added in v0.1.0

type BucketExtraAPI interface {
	ReadEncryption(ctx context.Context) (*v2.HandlerEncryptionConfigRes, error)
	EnableEncryption(ctx context.Context, KMSKeyID string) error
	DisableEncryption(ctx context.Context) error

	ReadReplication(ctx context.Context) (*v2.ModelReplication, error)
	EnableReplication(ctx context.Context, targetBucket string) (*v2.ModelReplication, error)
	DisableReplication(ctx context.Context) error

	ReadPenalty(ctx context.Context) (*v2.BucketPenaltyData, error)
	ReadUsage(ctx context.Context) (*v2.BucketUsageData, error)
	ReadQuota(ctx context.Context) (*v2.BucketQuotaData, error)
}

func NewBucketExtraOp added in v0.1.0

func NewBucketExtraOp(siteClient *SiteClient, fedClient *FedClient, bucket string) BucketExtraAPI

type Error added in v0.1.0

type Error struct {
	// contains filtered or unexported fields
}

func NewAPIError added in v0.1.0

func NewAPIError(method string, code int, err error) *Error

func NewError added in v0.1.0

func NewError(msg string, err error) *Error

func (*Error) Error added in v0.1.0

func (e *Error) Error() string

func (*Error) Unwrap added in v0.1.0

func (e *Error) Unwrap() error

type FedClient added in v0.1.0

type FedClient struct {
	// contains filtered or unexported fields
}

func NewFedClient added in v0.1.0

func NewFedClient(client saclient.ClientAPI) (*FedClient, error)

func NewFedClientWithAPIRootURL added in v0.1.0

func NewFedClientWithAPIRootURL(client saclient.ClientAPI, apiRootURL string) (*FedClient, error)

type PermissionsAPI added in v0.1.0

type PermissionsAPI interface {
	List(ctx context.Context) ([]v2.PermissionsDataItem, error)
	Create(ctx context.Context, displayName string, controls v2.BucketControls) (*v2.PermissionData, error)
	Read(ctx context.Context, permissionId string) (*v2.PermissionData, error)
	Update(ctx context.Context, permissionId string, displayName string, controls v2.BucketControls) (*v2.PermissionData, error)
	Delete(ctx context.Context, permissionId string) error

	ListAccessKeys(ctx context.Context, permissionId string) ([]v2.PermissionKeysDataItem, error)
	// Secretはこの戻り値でのみ参照可能
	CreateAccessKey(ctx context.Context, permissionId string) (*v2.PermissionKeyData, error)
	// Secretは常に空文字になっている
	ReadAccessKey(ctx context.Context, permissionId string, accessKeyId string) (*v2.PermissionKeyData, error)
	DeleteAccessKey(ctx context.Context, permissionId string, accessKeyId string) error
}

func NewPermissionOp

func NewPermissionOp(client *SiteClient) PermissionsAPI

NewPermissionOp パーミッション関連API

type SiteAPI

type SiteAPI interface {
	List(ctx context.Context) ([]v2.ModelCluster, error)
	Read(ctx context.Context, siteId string) (*v2.ModelCluster, error)

	ListPlans(ctx context.Context) ([]v2.PlanItem, error)
}

func NewSiteOp

func NewSiteOp(fedClient *FedClient) SiteAPI

func NewSiteWithPlansOp added in v0.1.0

func NewSiteWithPlansOp(fedClient *FedClient, siteClient *SiteClient) SiteAPI

type SiteClient added in v0.1.0

type SiteClient struct {
	// contains filtered or unexported fields
}

func NewSiteClient added in v0.1.0

func NewSiteClient(client saclient.ClientAPI, siteId string) (*SiteClient, error)

func NewSiteClientWithAPIRootURL added in v0.1.0

func NewSiteClientWithAPIRootURL(client saclient.ClientAPI, apiRootURL string, siteId string) (*SiteClient, error)

type SiteStatusAPI

type SiteStatusAPI interface {
	Read(ctx context.Context) (*v2.StatusData, error)
	ReadQuota(ctx context.Context) (*v2.QuotaData, error)
	ReadBucketMetering(ctx context.Context, bucketName string, from, to time.Time) ([]v2.BucketBillingItem, error)
}

func NewSiteStatusOp

func NewSiteStatusOp(client *SiteClient) SiteStatusAPI

Directories

Path Synopsis
apis
v2
Code generated by ogen, DO NOT EDIT.
Code generated by ogen, DO NOT EDIT.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL