
Python調用Google Bard API 完整指南
mc
驗證mc
提供了諸如ls,cat,cp,mirror,diff等UNIX命令的替代方案,支持文件系統和Amazon S3兼容的云存儲服務。
mc
Copymc config host add myazure http://gateway-ip:9000 azureaccountname azureaccountkey
Copymc ls myazure
[2017-02-22 01:50:43 PST] 0B ferenginar/
[2017-02-26 21:43:51 PST] 0B my-container/
[2017-02-26 22:10:11 PST] 0B test-container1/
Minio是一種基于Apache License v2.0協議的對象存儲服務,完全兼容亞馬遜的S3云儲存服務。它非常適合存儲非結構化數據,如圖片、視頻、日志文件、備份數據等。
Minio已經實現了多個Gateway,包括Amazon S3、Google Cloud Storage、Azure Storage等。用戶可以通過這些Gateway,將S3兼容的API請求轉發到其他類型的對象存儲中,如阿里云OSS。
一個Gateway需要實現GatewayLayer接口,如下所示:
// ObjectLayer implements primitives for object API layer.
type ObjectLayer interface {
// Storage operations.
Shutdown() error
StorageInfo() StorageInfo
// Bucket operations.
MakeBucketWithLocation(bucket string, location string) error
GetBucketInfo(bucket string) (bucketInfo BucketInfo, err error)
ListBuckets() (buckets []BucketInfo, err error)
DeleteBucket(bucket string) error
ListObjects(bucket, prefix, marker, delimiter string, maxKeys int) (result ListObjectsInfo, err error)
// Object operations.
GetObject(bucket, object string, startOffset int64, length int64, writer io.Writer) (err error)
GetObjectInfo(bucket, object string) (objInfo ObjectInfo, err error)
PutObject(bucket, object string, data *HashReader, metadata map[string]string) (objInfo ObjectInfo, err error)
CopyObject(srcBucket, srcObject, destBucket, destObject string, metadata map[string]string) (objInfo ObjectInfo, err error)
DeleteObject(bucket, object string) error
// Multipart operations.
ListMultipartUploads(bucket, prefix, keyMarker, uploadIDMarker, delimiter string, maxUploads int) (result ListMultipartsInfo, err error)
NewMultipartUpload(bucket, object string, metadata map[string]string) (uploadID string, err error)
CopyObjectPart(srcBucket, srcObject, destBucket, destObject string, uploadID string, partID int, startOffset int64, length int64) (info PartInfo, err error)
PutObjectPart(bucket, object, uploadID string, partID int, data *HashReader) (info PartInfo, err error)
ListObjectParts(bucket, object, uploadID string, partNumberMarker int, maxParts int) (result ListPartsInfo, err error)
AbortMultipartUpload(bucket, object, uploadID string) error
CompleteMultipartUpload(bucket, object, uploadID string, uploadedParts []completePart) (objInfo ObjectInfo, err error)
// Healing operations.
HealBucket(bucket string) error
ListBucketsHeal() (buckets []BucketInfo, err error)
HealObject(bucket, object string) (int, int, error)
ListObjectsHeal(bucket, prefix, marker, delimiter string, maxKeys int) (ListObjectsInfo, error)
ListUploadsHeal(bucket, prefix, marker, uploadIDMarker,
delimiter string, maxUploads int) (ListMultipartsInfo, error)
}
// GatewayLayer - Interface to implement gateway mode.
type GatewayLayer interface {
ObjectLayer
AnonGetObject(bucket, object string, startOffset int64, length int64, writer io.Writer) (err error)
AnonGetObjectInfo(bucket, object string) (objInfo ObjectInfo, err error)
AnonPutObject(bucket string, object string, size int64, data io.Reader, metadata map[string]string, sha256sum string) (ObjectInfo, error)
SetBucketPolicies(string, policy.BucketAccessPolicy) error
GetBucketPolicies(string) (policy.BucketAccessPolicy, error)
DeleteBucketPolicies(string) error
AnonListObjects(bucket, prefix, marker, delimiter string, maxKeys int) (result ListObjectsInfo, err error)
AnonListObjectsV2(bucket, prefix, continuationToken, delimiter string, maxKeys int, fetchOwner bool, startAfter string) (result ListObjectsV2Info, err error)
ListObjectsV2(bucket, prefix, continuationToken, delimiter string, maxKeys int, fetchOwner bool, startAfter string) (result ListObjectsV2Info, err error)
AnonGetBucketInfo(bucket string) (bucketInfo BucketInfo, err error)
}
對于不支持的操作,可以使用留樁代碼返回 NotImplemented
錯誤,官方提供了一個 gatewayUnsupported
供參考。
了解接口后,只需將代碼適配到接口中即可。阿里云OSS的API風格與AWS S3相似,適配過程相對簡單。
編輯(2017-10-23): Pull Request 請看 minio/minio#5103
編輯(2017-12-19): Minio 上游已合并 PR,可直接使用。
最后,要注意Minio結構較為復雜,添加Gateway需修改多個文件。為此,也提交了一個PR: minio/minio#5111
docker run -p 9000:9000 --name azure-s3
-e "MINIO_ACCESS_KEY=azureaccountname"
-e "MINIO_SECRET_KEY=azureaccountkey"
minio/minio gateway azure
請確保用您的Azure賬戶名稱替換azureaccountname
,并用Azure賬戶密鑰替換azureaccountkey
。
http://127.0.0.1:9000
,如果瀏覽器成功顯示MinIO界面,則說明服務器已成功啟動。mc
以連接Azure上的MinIO網關?mc
客戶端:
mc config host add myazure http://gateway-ip:9000 azureaccountname azureaccountkey
請用您的實際網關IP替換gateway-ip
,用您的Azure賬戶名稱和密鑰替換azureaccountname
和azureaccountkey
。
NotImplemented
錯誤。