Я намагаюся зрозуміти, коли мені слід користуватися ресурсом, а коли клієнтом .
Визначення, наведені в документах 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щоб виконати роботу.