CloudFront'a bağlanmak için boto3 kullanırken bir AWS profili nasıl seçilir


128

Boto 3 python kitaplığını kullanıyorum ve AWS CloudFront'a bağlanmak istiyorum. Doğru AWS Profilini (AWS Kimlik Bilgileri) belirtmem gerekiyor, ancak resmi belgelere baktığımda bunu belirtmenin bir yolunu göremiyorum.

İstemciyi şu kodu kullanarak başlatıyorum: client = boto3.client('cloudfront')

Ancak bu, bağlanmak için varsayılan profili kullanmasıyla sonuçlanır. Hangi profili kullanacağımı belirleyebileceğim bir yöntem bulamadım.


Ayrıca bkz: profillerle AWS S3'ten bir dosya okuyun ve indirin
Martin Thoma

anahtarları kodda kullanmayı denedin mi? (ayrıca env client = boto3.client('s3', aws_access_key_id = '<access-key>', aws_secret_access_key = '<secret-key>')
var'ı

Yanıtlar:


225

Bence doktorlar bunun nasıl yapılacağını göstermekte harika değiller. Ancak bir süredir desteklenen bir özellikti ve bu çekme talebinde bazı ayrıntılar var .

Yani bunu yapmanın üç farklı yolu var:

Seçenek A) Profille yeni bir oturum oluşturun

    dev = boto3.session.Session(profile_name='dev')

Seçenek B) Kodda varsayılan oturumun profilini değiştirin

    boto3.setup_default_session(profile_name='dev')

Seçenek C) Varsayılan oturumun profilini bir ortam değişkeniyle değiştirin

    $ AWS_PROFILE=dev ipython
    >>> import boto3
    >>> s3dev = boto3.resource('s3')

1
Env değişkeninin AWS_PROFILE olması gerekmez mi?
Stefano M

Bunun için teşekkürler! bu bilgiyi şimdiye kadar hiçbir yerde bulamadı. Görünüşe göre bunun işe yaraması için sadece 2. adıma ihtiyacım vardı. 1. adım ne yaptı? (dev değişken kullanılmış veya başka bir şey geçirmeyecek beri?)
Mark

40
Bunlar seçenekler, adımlar değil. İlk seçenekte, varsayılan oturum yerine kullanmak için yeni bir oturum oluşturursunuz. Yani bu seansta bir müşteri oluşturmak için dev.client('s3')bunun yerine şöyle bir şey yaparsınızboto3.client('s3')
Jordon Phillips

konu dışı, ipythonbenim için de faydalı oldu.
Mike D

7
Profil listesini kullanarak alın boto3.session.Session().available_profiles- bu bir listedir. Sonra istediğinizi kullanın @ jordan-phillips.
Daisuke Aramaki

35

Bunu 'dev' adında bir profil kullanmak için yapın:

session = boto3.session.Session(profile_name='dev')
s3 = session.resource('s3')
for bucket in s3.buckets.all():
    print(bucket.name)

25

Boto3 dokümantasyonunun bu bölümü faydalıdır.

İşte benim için çalıştı:

session = boto3.Session(profile_name='dev')
client = session.client('cloudfront')

5

İstemci aramasından önce oturum yapılandırmasına profil eklemeniz yeterlidir. boto3.session.Session(profile_name='YOUR_PROFILE_NAME').client('cloudwatch')

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.