目录
1、使用介绍
1.1 下载文件
代码示例:
传输配置
修改multipart阈值
代码示例:
设置并发数
代码示例:
设置并发的实现方式
代码示例:
1.2 静态服务
将一个Bucket作为一个静态服务
获取:
设置:
删除:
查询:
上篇地址:
【AWS系列】boto3入门-上篇
下面继续介绍boto3的使用
1、使用介绍
1.1 下载文件
下载文件和上传文件是对称的
Client、Bucket、Object三个对象提供了
download_file()、download_fileobj()。download_file()是并行的,
download_file_obj()是串行的,这两个函数同样提供了ExtraArgs和Callback参数。
boto3.s3.transfer.S3Transfer.ALLOWED_DOWNLOAD_ARGS描述了下载过程的ExtraArgs的可用参数。代码示例:
import boto3 s3 = boto3.client('s3') s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME') with open('FILE_NAME', 'wb') as f: s3.download_fileobj('BUCKET_NAME', 'OBJECT_NAME', f)
讯享网
传输配置
在上传文件、下载文件、复制文件过程中,AWS SDK会自动管理重试等网络配置。默认的网络配置可适用于大多数情况,只有特殊情境下才需要修改传输配置。
传输配置封装在 boto3.s3.transfer.TransferConfig对象中,upload_file()等函数都有一个Config参数接受一个TransferConfig对象。修改multipart阈值
当使用
upload_file()上传一个大文件时,如果文件大小超过了multipart_threshold,那么会启动多线程上传。代码示例:
讯享网import boto3 from boto3.s3.transfer import TransferConfig # Set the desired multipart threshold value (5GB) GB = 1024 3 config = TransferConfig(multipart_threshold=5*GB) # Perform the transfer s3 = boto3.client('s3') s3.upload_file('FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME', Config=config)设置并发数
对于
upload_file()和download_file()默认启用多线程下载,为了减少网络占用或者增加网络占用,可以通过传输配置来控制。max_concurrency参数代码示例:
# To consume less downstream bandwidth, decrease the maximum concurrency config = TransferConfig(max_concurrency=5) # Download an S3 object s3 = boto3.client('s3') s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME', Config=config)设置并发的实现方式
在boto3中,并发是通过多线程来实现的。如果不使用线程就没法实现并发,max_concurrency参数会被忽略掉。
代码示例:
讯享网# Disable thread use/transfer concurrency config = TransferConfig(use_threads=False) s3 = boto3.client('s3') s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME', Config=config)
1.2 静态服务
将一个Bucket作为一个静态服务
获取:
获取桶的静态服务配置
import boto3 # Retrieve the website configuration s3 = boto3.client('s3') result = s3.get_bucket_website('BUCKET_NAME')设置:
设置桶的静态服务配置
讯享网# Define the website configuration website_configuration = { 'ErrorDocument': {'Key': 'error.html'}, 'IndexDocument': {'Suffix': 'index.html'}, } # Set the website configuration s3 = boto3.client('s3') s3.put_bucket_website('BUCKET_NAME', website_configuration)设置桶策略:
import json # Create a bucket policy bucket_name = 'BUCKET_NAME' bucket_policy = { 'Version': '2012-10-17', 'Statement': [{ 'Sid': 'AddPerm', 'Effect': 'Allow', 'Principal': '*', 'Action': ['s3:GetObject'], 'Resource': f'arn:aws:s3:::{bucket_name}/*' }] } # Convert the policy from JSON dict to string bucket_policy = json.dumps(bucket_policy) # Set the new policy s3 = boto3.client('s3') s3.put_bucket_policy(bucket_name, Policy=bucket_policy)删除:
删除一个桶的网站配置
讯享网# Delete the website configuration s3 = boto3.client('s3') s3.delete_bucket_website('BUCKET_NAME')删除桶策略
# Delete a bucket's policy s3 = boto3.client('s3') s3.delete_bucket_policy('BUCKET_NAME')查询:
查询一个桶的权限
讯享网import boto3 # Retrieve the policy of the specified bucket s3 = boto3.client('s3') result = s3.get_bucket_policy('BUCKET_NAME') print(result['Policy'])

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/58401.html