私はResourceをいつ使うべきか、Clientを使うべきかを理解しようとしています。boto3クライアントを使用するタイミングとboto3リソースを使用するタイミングを教えてください。
boto3 docsで提供されている定義は、どちらか一方を使用することが望ましい場合は実際にはっきりしません。
私はResourceをいつ使うべきか、Clientを使うべきかを理解しようとしています。boto3クライアントを使用するタイミングとboto3リソースを使用するタイミングを教えてください。
boto3 docsで提供されている定義は、どちらか一方を使用することが望ましい場合は実際にはっきりしません。
boto3.resourcesは、boto3.clientを囲む高水準のサービスクラスです。
これは、元のresource-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()を使用してジョブを完了させる必要があります。
これは少し役に立ちますが、ドキュメント自体は多少曖昧ですが、クライアントが特定のAPI呼び出しにマップすることが重要です。 –
クライアントにパラメータとして資格情報を渡してクライアントを初期化します。インポートboto3 クライアント= boto3.client( 's3'、 aws_access_key_id = ACCESS_KEY、 aws_secret_access_key = SECRET_KEY )。私はリソースのために同様のことをすることはできますか?私はドキュメントでこれを見つけることができません。 – Naveen
@NaveenハードコードされたAPIキーを渡すことはお勧めしません。あなたが主張するなら、boto3.sessionを使用してセッションからリソースをインスタンス化することができます。まわりにはたくさんの例があります。 – mootmoot
もう1つの回答https://stackoverflow.com/a/42818143/ – anishpatel