Я намагаюся зрозуміти, коли мені слід користуватися ресурсом, а коли клієнтом .
Визначення, наведені в документах boto3, насправді не дають зрозуміти, коли переважно використовувати те чи інше.
Відповіді:
boto3.resource
це обгортання класу послуг високого рівня boto3.client
.
Він призначений для приєднання підключених ресурсів, де згодом можна використовувати інші ресурси, не вказуючи вихідний ідентифікатор ресурсу.
import boto3
s3 = boto3.resource("s3")
bucket = s3.Bucket('mybucket')
# now bucket is "attached" the S3 bucket name "mybucket"
print(bucket)
# s3.Bucket(name='mybucket')
print(dir(bucket))
#show you all class method action you may perform
OTH, boto3.client є низьким рівнем, у вас немає "об'єкта класу входу", тому ви повинні чітко вказати точні ресурси, до яких він підключається для кожної дії, яку ви виконуєте.
Це залежить від індивідуальних потреб. Однак boto3.resource
не обгортає всі boto3.client
функції, тому колись вам потрібно зателефонувати boto3.client
або скористатися, boto3.resource.meta.client
щоб виконати роботу.