欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python如何實現(xiàn)查詢bucket已用量腳本

小編給大家分享一下python如何實現(xiàn)查詢bucket已用量腳本,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

吉林網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

目前僅支持ceph的s3方案,具體配置看說明

# -*- coding: utf-8 -*-
import requests
import json
from email.utils import formatdate
import hmac


py3k = False
from hashlib import sha1 as sha
try:
    from urlparse import urlparse
    from base64 import encodestring

except:
    py3k = True
    from urllib.parse import urlparse
    from base64 import encodebytes as encodestring


class AuthBase(object):
    """Base class that all auth implementations derive from"""

    def __call__(self, r):
        raise NotImplementedError('Auth hooks must be callable.')


class S3Auth(AuthBase):

    """Attaches AWS Authentication to the given Request object."""

    service_base_url = 's3.amazonaws.com'
    # List of Query String Arguments of Interest
    special_params = [
        'acl', 'location', 'logging', 'partNumber', 'policy', 'requestPayment',
        'torrent', 'versioning', 'versionId', 'versions', 'website', 'uploads',
        'uploadId', 'response-content-type', 'response-content-language',
        'response-expires', 'response-cache-control', 'delete', 'lifecycle',
        'response-content-disposition', 'response-content-encoding'
    ]

    def __init__(self, access_key, secret_key, service_url=None):
        if service_url:
            self.service_base_url = service_url
        self.access_key = str(access_key)
        self.secret_key = str(secret_key)
        self.au =""

    def __call__(self, r):
        # Create date header if it is not created yet.
        if not 'date' in r.headers and not 'x-amz-date' in r.headers:
            r.headers['date'] = formatdate(
                timeval=None,
                localtime=False,
                usegmt=True)
        signature = self.get_signature(r)
        if py3k:
            signature = signature.decode('utf-8')
        r.headers['Authorization'] = 'AWS %s:%s' % (self.access_key, signature)
        self.au = r.headers
        # print self.au
        return r

    def get_signature(self, r):
        canonical_string = self.get_canonical_string(
            r.url, r.headers, r.method)
        if py3k:
            key = self.secret_key.encode('utf-8')
            msg = canonical_string.encode('utf-8')
        else:
            key = self.secret_key
            msg = canonical_string
        h = hmac.new(key, msg, digestmod=sha)
        return encodestring(h.digest()).strip()

    def get_canonical_string(self, url, headers, method):
        parsedurl = urlparse(url)
        objectkey = parsedurl.path[1:]
        query_args = sorted(parsedurl.query.split('&'))

        bucket = parsedurl.netloc[:-len(self.service_base_url)]
        if len(bucket) > 1:
            # remove last dot
            bucket = bucket[:-1]

        interesting_headers = {
            'content-md5': '',
            'content-type': '',
            'date': ''}
        for key in headers:
            lk = key.lower()
            try:
                lk = lk.decode('utf-8')
            except:
                pass
            if headers[key] and (lk in interesting_headers.keys() or lk.startswith('x-amz-')):
                interesting_headers[lk] = headers[key].strip()

        # If x-amz-date is used it supersedes the date header.
        if not py3k:
            if 'x-amz-date' in interesting_headers:
                interesting_headers['date'] = ''
        else:
            if 'x-amz-date' in interesting_headers:
                interesting_headers['date'] = ''

        buf = '%s\n' % method
        for key in sorted(interesting_headers.keys()):
            val = interesting_headers[key]
            if key.startswith('x-amz-'):
                buf += '%s:%s\n' % (key, val)
            else:
                buf += '%s\n' % val

        # append the bucket if it exists
        if bucket != '':
            buf += '/%s' % bucket

        # add the objectkey. even if it doesn't exist, add the slash
        buf += '/%s' % objectkey

        params_found = False

        # handle special query string arguments
        for q in query_args:
            k = q.split('=')[0]
            if k in self.special_params:
                if params_found:
                    buf += '&%s' % q
                else:
                    buf += '?%s' % q
                params_found = True
        return buf

class S3Admin():
    def __init__(self):
        self.access_key = '' #填access_key
        self.secret_key = '' #填secret_key
        self.endpoint = 's3.ceph.work'  #填endpoint

    def get_bucket_usage(self,bucketname):
        #url = 'http://%s/%s/' % (self.endpoint, bucketname) #path style
        url = 'http://%s.%s/' % (bucketname,self.endpoint) #virtual hosted styple
        r = requests.head(url, auth=S3Auth(self.access_key, self.secret_key, self.endpoint))
        print r.headers
        return r.headers


s3client = S3Admin()
bucket_name= 'xxx'  #替換成相應(yīng)的bucket名稱
result = s3client.get_bucket_usage(bucket_name)
print 'objects_num= %s , total_Bytes_Used= %s ' % (result['X-RGW-Object-Count'],result['X-RGW-Bytes-Used'])
#注意 objects_num 為當(dāng)前bucket內(nèi)的object數(shù)量,total_Bytes_Used為當(dāng)前bucket內(nèi)的已用容量(單位為Byte)

以上是“python如何實現(xiàn)查詢bucket已用量腳本”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文題目:python如何實現(xiàn)查詢bucket已用量腳本
網(wǎng)頁鏈接:http://aaarwkj.com/article40/igodho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站做網(wǎng)站、網(wǎng)站排名、外貿(mào)建站、網(wǎng)站制作、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
韩国专区福利一区二区| 欧美亚洲国产日韩另类| 日韩不伦高清一区二区三区| 精品少妇人妻av蜜桃| 午夜视频在线观看黄片| 国产精品国产三级国产不产一地| 亚洲欧洲一区二区中文字幕| 色偷偷亚洲精品一区二区| 国产麻豆剧传媒精品av| 日本一区二区视频播放网站| av天堂资源在线播放| 日韩一区二区三区91| 草草视频在线观看网站| 国产传媒在线免费播放| 欧美大吊视频在线观看| 五月综合丁香婷婷久久| 91福利免费在线看| 日韩毛片中文字幕在线观看| 丰满的少妇一区二区三区免费观看| 亚洲av永久精品一区二区三区 | 欧美精品成人免费在线| 欧美日韩视频一区二区| 一区二区三区在线观看淫| 亚洲精品女同专区视频| av一区二区三区网站| 亚洲精品中文字幕码专区| 日韩中文字幕欧美国产| 国产精品福利手机在线观看| 麻豆国产免费av在线| 中文字幕一区精品日韩| 国产精品一级性生活片| 亚洲国产韩国精品在线| 美女后入式在线观看| 在线观看日韩三级av| 五月激情开心久久婷婷| 亚洲精品91在线中文字幕| 欧美亚洲午夜精品久久久| 日韩精品高清视频在线观看| 男女互射视频在线观看| av资源中文字幕在线天堂| 亚洲欧美日韩不卡视频|