web-dev-qa-db-ja.com

boto3クライアントを使用する場合とboto3リソースを使用する場合

Resource を使用するタイミングと Client を使用するタイミングを理解しようとしています。

Boto3のドキュメントで提供されている定義は、どちらを使用することが望ましいかを明確に示していません。

48
aquil.abdullah

boto3.resourcesは、boto3.clientをラップする高レベルのサービスクラスです。

元のリソースIDを指定せずに、後で他のリソースを使用できる場所に、接続されたリソースをアタッチすることを意味します。

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.resourcesはすべてのboto3.client機能をラップするわけではないため、boto3.clientを呼び出すか、boto3.resource.meta.client()を使用してジョブを完了する必要があります。

50
mootmoot