2016-09-01 31 views

Odpowiedz

33

boto3.resources jest opakowaniem klasy wysokiego poziomu wokół pliku boto3.client.

Oznacza to podłączenie połączonych zasobów, w których można później korzystać z innych zasobów bez podawania oryginalnego identyfikatora zasobu.

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 jest niski poziom, nie ma „wejścia klasy obiekt”, co należy wyraźnie określić dokładnych zasobów połączyć się do każdej czynności wykonać.

To zależy od indywidualnych potrzeb. Jednak boto3.resources nie zawija całej funkcjonalności boto3.client, więc czasami trzeba wywołać boto3.client lub użyć boto3.resource.meta.client(), aby wykonać zadanie.

+1

Dzięki, to trochę pomaga, sama dokumentacja jest nieco niejasna, ale domyślam się, że klienci mapują się do konkretnych wywołań API, które możesz wykonać . –

+0

Im inicjalizuję mojego klienta, przekazując poświadczenia jako parametry do klienta. import boto3 klient = boto3.client ( 's3', aws_access_key_id = ACCESS_KEY, aws_secret_access_key = SECRET_KEY ). Czy mogę zrobić coś podobnego dla zasobu? nie mogę tego znaleźć w dokumentacji. – Naveen

+0

@Naveen Nie zaleca się przesyłania zaszyfrowanego klucza API. Jeśli nalegasz, możesz użyć boto3.session i utworzyć instancję swojego zasobu z sesji. Jest mnóstwo przykładów. – mootmoot