見出し画像

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を使うべきでしょう.


この記事が気に入ったらサポートをしてみませんか?