2016-09-01 10 views

答えて

33

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()を使用してジョブを完了させる必要があります。

+1

これは少し役に立ちますが、ドキュメント自体は多少曖昧ですが、クライアントが特定のAPI呼び出しにマップすることが重要です。 –

+0

クライアントにパラメータとして資格情報を渡してクライアントを初期化します。インポートboto3 クライアント= boto3.client( 's3'、 aws_access_key_id = ACCESS_KEY、 aws_secret_access_key = SECRET_KEY )。私はリソースのために同様のことをすることはできますか?私はドキュメントでこれを見つけることができません。 – Naveen

+0

@NaveenハードコードされたAPIキーを渡すことはお勧めしません。あなたが主張するなら、boto3.sessionを使用してセッションからリソースをインスタンス化することができます。まわりにはたくさんの例があります。 – mootmoot

関連する問題