苍穹之麒麟 发表于 2020-7-27 14:55

【原创源码】【python】python3访问S3存储封装package

# -*- coding: utf-8 -*-

# __ author:Jack
# date: 2020-04-26

# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html

import boto3
from boto3.s3.transfer import TransferConfig
from botocore.exceptions import ClientError

def get_s3_client(url, access_key, secret_key):
    return boto3.client('s3',
      endpoint_url = url,
      aws_access_key_id = access_key,
      aws_secret_access_key = secret_key)

def get_all_bucket(client):
    resp = client.list_buckets()
    return resp["Buckets"]

# 有bug
def get_all_s3_keys(client, bucket):
    keys = []
    kwargs = {'Bucket': bucket}
    while True:
      resp = client.list_objects_v2(**kwargs)
      for obj in resp['Contents']:
            keys.append(obj['Key'])
      try:
            kwargs['ContinuationToken'] = resp['NextContinuationToken']
      except KeyError as e:
            print(e)
            break
    return keys

def get_object_size(client, bucket, key):
    try:
      response = client.get_object(Bucket = bucket, Key = key)
      return response['ContentLength']
    except ClientError as e:
      errorCode = e.response['Error']['Code']
      print(errorCode)
   
    return None

if __name__=='__main__':
    client = get_s3_client('http://x.xx.x:81','code','code')
    #get_all_bucket(client)
    #print(get_all_s3_keys(client, 'bingodrive'))
    print(get_object_size(client,'xx','xx'))
页: [1]
查看完整版本: 【原创源码】【python】python3访问S3存储封装package