Na boto określałem swoje dane uwierzytelniające podczas łączenia się z S3 w następujący sposób:
import boto
from boto.s3.connection import Key, S3Connection
S3 = S3Connection( settings.AWS_SERVER_PUBLIC_KEY, settings.AWS_SERVER_SECRET_KEY )
Mógłbym wtedy użyć S3 do wykonania moich operacji (w moim przypadku usunięcia obiektu z zasobnika).
W przypadku boto3 wszystkie znalezione przykłady są takie:
import boto3
S3 = boto3.resource( 's3' )
S3.Object( bucket_name, key_name ).delete()
Nie mogłem określić moich poświadczeń i dlatego wszystkie próby kończą się InvalidAccessKeyId
błędem.
Jak mogę określić poświadczenia w boto3?
python
amazon-web-services
amazon-s3
boto3
Robert Brax
źródło
źródło
Odpowiedzi:
Możesz utworzyć sesję :
import boto3 session = boto3.Session( aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY, )
Następnie użyj tej sesji, aby uzyskać zasób S3:
s3 = session.resource('s3')
źródło
Możesz uzyskać
client
nową sesję bezpośrednio, jak poniżej.s3_client = boto3.client('s3', aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY, region_name=REGION_NAME )
źródło
To jest starsze, ale umieszczam to również tutaj w celach informacyjnych. boto3.resource po prostu implementuje domyślną sesję, możesz przekazać szczegóły sesji boto3.resource.
Help on function resource in module boto3: resource(*args, **kwargs) Create a resource service client by name using the default session. See :py:meth:`boto3.session.Session.resource`.
https://github.com/boto/boto3/blob/86392b5ca26da57ce6a776365a52d3cab8487d60/boto3/session.py#L265
widać, że przyjmuje te same argumenty, co Boto3.Session
import boto3 S3 = boto3.resource('s3', region_name='us-west-2', aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY) S3.Object( bucket_name, key_name ).delete()
źródło
Chciałbym rozwinąć odpowiedź @ JustAGuy. Preferowaną przeze mnie metodą jest
AWS CLI
utworzenie pliku konfiguracyjnego. Powodem jest to, że w pliku konfiguracyjnym rozszerzenieCLI
lubSDK
automatycznie szuka poświadczeń w~/.aws
folderze. A dobrą rzeczą jest to, żeAWS CLI
jest napisane w Pythonie.Możesz pobrać cli z pypi, jeśli jeszcze go nie masz. Oto kroki, aby skonfigurować cli z terminala
$> pip install awscli #can add user flag $> aws configure AWS Access Key ID [****************ABCD]:[enter your key here] AWS Secret Access Key [****************xyz]:[enter your secret key here] Default region name [us-west-2]:[enter your region here] Default output format [None]:
Po tym możesz uzyskać dostęp
boto
do dowolnego interfejsu API bez konieczności określania kluczy (chyba że chcesz użyć innych poświadczeń).źródło
Istnieje wiele sposobów przechowywania referencji przy jednoczesnym korzystaniu z boto3.resource (). Sam używam metody AWS CLI. Działa doskonale.
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html?fbclid=IwAR2LlrS4O2gYH6xAF4QDVIH2Q2tzfF_VZ6loM3XfXsPAOR4qA-pX_qAILys
źródło