Cách chọn cấu hình AWS khi sử dụng boto3 để kết nối với CloudFront


127

Tôi đang sử dụng thư viện python Boto 3 và muốn kết nối với AWS CloudFront. Tôi cần chỉ định đúng Hồ sơ AWS (AWS Credentials), nhưng nhìn vào tài liệu chính thức, tôi không thấy cách nào để chỉ định nó.

Tôi đang khởi tạo ứng dụng khách bằng mã: client = boto3.client('cloudfront')

Tuy nhiên, điều này dẫn đến việc sử dụng cấu hình mặc định để kết nối. Tôi không thể tìm thấy phương pháp mà tôi có thể chỉ định cấu hình nào sẽ sử dụng.


Xem thêm: đọctải xuống tệp từ AWS S3 có hồ sơ
Martin Thoma

bạn đã thử sử dụng các phím vào mã chưa? (bạn cũng có thể sử dụng env var để ẩn nó từ mã)client = boto3.client('s3', aws_access_key_id = '<access-key>', aws_secret_access_key = '<secret-key>')
Ivan Carrasco Quiroz

Câu trả lời:


224

Tôi nghĩ rằng các tài liệu không tuyệt vời trong việc chỉ ra cách làm điều này. Tuy nhiên, nó đã là một tính năng được hỗ trợ trong một thời gian và có một số chi tiết trong yêu cầu kéo này .

Vì vậy, có ba cách khác nhau để làm điều này:

Tùy chọn A) Tạo một phiên mới với cấu hình

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

Tùy chọn B) Thay đổi cấu hình của phiên mặc định trong mã

    boto3.setup_default_session(profile_name='dev')

Tùy chọn C) Thay đổi cấu hình của phiên mặc định bằng một biến môi trường

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

1
Biến env không phải là AWS_PROFILE?
Stefano M

Cảm ơn vì điều đó! dường như không tìm thấy thông tin đó ở bất cứ đâu cho đến nay. Có vẻ như tôi chỉ cần bước 2 để làm cho việc này hoạt động. Bước 1 đã làm gì? (vì biến dev không được sử dụng hoặc được chuyển vào bất kỳ thứ gì khác?)
Đánh dấu

40
Đó là các tùy chọn, không phải các bước. Trong tùy chọn đầu tiên, bạn tạo một phiên mới để sử dụng thay vì phiên mặc định. Vì vậy, để tạo ra một khách hàng với phiên mà bạn sẽ làm điều gì đó giống như dev.client('s3')thay vìboto3.client('s3')
Jordon Phillips

lạc đề, ipythoncũng hữu ích cho tôi.
Mike D

7
Lấy danh sách hồ sơ bằng cách sử dụng boto3.session.Session().available_profiles- đó là một danh sách. Sau đó, sử dụng cái bạn muốn @ jordan-phillips.
Daisuke Aramaki

35

Làm điều này để sử dụng một hồ sơ có tên 'dev':

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

24

Phần này của tài liệu boto3 rất hữu ích.

Đây là những gì đã làm việc cho tôi:

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

5

Chỉ cần thêm hồ sơ vào cấu hình phiên trước khi khách hàng gọi. boto3.session.Session(profile_name='YOUR_PROFILE_NAME').client('cloudwatch')

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.