Boto3 ClientsとResourcesの違いについて
Boto3とは,PythonからAWSのAPIを呼び出すために使われます.
多くのAWSサービスのために,Boto3は2つの異なる方法を提供しています.
1. Client: 低レイヤーのサービスのアクセスが可能
2. Resource: 高レイヤーのオブジェクト指向なサービスアクセスが可能
まずClientを使う場合を見てみます.
アクセスしたいサービスの名前を引数に取れば良いです.例えば,S3ならば,
import boto3
s3_client = boto3.client('s3')
Resourceを使うならば,
import boto3
s3_resource = boto3.resource('s3')
ClientsもResourcesもほぼ似ていますが,違いはもちろんあります.
clientsの場合は,より低レイヤーであるため,比較的多くのコードを書かなければいけません.例えば,一般的にリスポンスがディクショナリで帰ってくるので,それをパースして必要な情報を取り出すコードが必要です.その代わり,Resourcesが提供していないいAWSのAPIを提供している場合があります.
一方で,Resourcesの場合は,Clientsとは異なり可読性の高いコードを書くことができます.しかも,上で述べたResourcesでは呼べないAPIがあった場合,わざわざ新しいclientを作る必要はなく,s3_resouce.meta.clientからClientsのAPIを呼び出すことができます.
s3_resource.meta.client.any_client_api_method
結論,特別な理由がない限りは,Boto3のResourcesを使うべきでしょう.
この記事が気に入ったらサポートをしてみませんか?