这里是有关Client,Resource和Session的所有更详细的信息。
客户:
- 低级AWS服务访问
- 从AWS 服务 描述生成
- 向开发人员展示botocore客户端
- 通常使用AWS服务API 1:1映射
- 客户端支持所有AWS服务操作
- 蛇形方法名称(例如ListBuckets API => list_buckets方法)
以下是客户端级别访问S3存储桶的对象(最多1000 **)的示例:
import boto3client = boto3.client('s3')response = client.list_objects_v2(Bucket='mybucket')for content in response['Contents']: obj_dict = client.get_object(Bucket='mybucket', Key=content['Key']) print(content['Key'], obj_dict['LastModified'])**您必须使用分页器,或实现自己的循环,如果数量超过1000,则使用连续标记重复调用list_objects()。
资源:
- 更高级别的,面向对象的API
- 根据 资源 描述生成
- 使用标识符和属性
- 有行动(对资源的操作)
- 公开子资源和AWS资源的集合
- 不提供AWS服务的100%API覆盖率
以下是使用资源级访问S3存储桶的对象(全部)的等效示例:
import boto3s3 = boto3.resource('s3')bucket = s3.Bucket('mybucket')for obj in bucket.objects.all(): print(obj.key, obj.last_modified)请注意,在这种情况下,您无需进行第二次API调用即可获取对象。您可以将其作为存储桶中的集合使用。这些子资源集合是延迟加载的。
您可以看到
Resource该代码的版本更加简单,紧凑,功能更多(它可以为您分页)。
Client如果要包括分页,代码的版本实际上比上面显示的要复杂。
会议:
- 存储配置信息(主要是凭据和所选区域)
- 允许您创建服务客户端和资源
- boto3在需要时为您创建一个默认会话
re:Invent
video入门视频是了解这些boto3概念的有用资源。



