当前位置:   article > 正文

AWS工具boto3使用笔记_python3 aws boto3設置key

python3 aws boto3設置key

通过适用于 Python 的 AWS 开发工具包 boto3 快速开始使用 AWS。Boto3 可以支持您轻松将 Python 应用程序、库或脚本与 AWS 服务进行集成,包括 Amazon S3、Amazon EC2 和 Amazon DynamoDB 等。

1. 上传和下载数据

  1. class CephBOTO3:
  2. def __init__(self):
  3. self.access_key = [your access key]
  4. self.secret_access_key = [your secret access key]
  5. self.bucket = [your bucket]
  6. self.endpoint = [your endpoint]
  7. self.service_name = [your service_name]
  8. self.session = boto3.Session(aws_access_key_id=self.access_key, aws_secret_access_key=self.secret_access_key)
  9. self.client = self.session.client(service_name=self.service_name, use_ssl=False, endpoint_url=self.endpoint)
  10. self.resource = boto3.resource(self.service_name, endpoint_url=self.endpoint,
  11. aws_access_key_id=self.access_key,
  12. aws_secret_access_key=self.secret_access_key)
  13. def upload(self, directory):
  14. file_paths = []
  15. for root, dirs, filenames in os.walk(directory):
  16. for name in filenames:
  17. file_path = os.path.join(root, name)
  18. file_paths.append((name, file_path))
  19. for file_name, file_path in file_paths:
  20. print("Uploading {}".format(file_name))
  21. self.resource.meta.client.upload_file(file_path, self.bucket, file_name)
  22. def download(self, directory):
  23. bucket = self.resource.Bucket(self.bucket)
  24. keys = self.get_buckets()
  25. for key in keys:
  26. file_name = directory + '/' + key
  27. bucket.download_file(Filename=file_name, Key=key)

2. 上传和下载用进度条

有时上传或者下载的数据较大,用户需要一个进度条,只需要定义回调类

  1. class ProgressPercentage(object):
  2. def __init__(self, file_name, file_path):
  3. self.file_name = file_name
  4. self.file_path = file_path
  5. self._size = float(os.path.getsize(file_path))
  6. self._seen_so_far = 0
  7. self._lock = threading.Lock()
  8. def __call__(self, bytes_amount):
  9. # To simplify, assume this is hooked up to a single filename
  10. with self._lock:
  11. self._seen_so_far += bytes_amount
  12. percentage = (self._seen_so_far / self._size) * 100
  13. sys.stdout.write("\r正在上传 %s (%.2f%%)" % (self.file_name, percentage))
  14. sys.stdout.flush()
'
运行

 然后在将其加入到上传下载函数中作为回调

bucket.upload_file(Filename=file_path, Key=file_name, Callback=ProgressPercentage(file_name, file_path))

3. 把数据存放在远端指定目录下

在传参时使用key来指定目录

  1. key = "A/B/C/{}".format(file_name)
  2. bucket.upload_file(Filename=file_path, Key=key, Callback=ProgressPercentage(file_name, file_path))

上面的代码运行后,文件会存放在远端的A/B/C目录下

参考文献

适用于python的AWS开发工具包Boto3_AWS SDK工具包-AWS云服务

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号