boto3를 사용하여 CloudFront에 연결할 때 AWS 프로필을 선택하는 방법


127

Boto 3 Python 라이브러리를 사용 중이며 AWS CloudFront에 연결하려고합니다. 올바른 AWS 프로필 (AWS 자격 증명)을 지정해야하지만 공식 문서를 보면 지정할 방법이 없습니다.

코드를 사용하여 클라이언트를 초기화하고 있습니다. client = boto3.client('cloudfront')

그러나 이로 인해 기본 프로필을 사용하여 연결하게됩니다. 사용할 프로필을 지정할 수있는 방법을 찾을 수 없습니다.


참고 항목 : 프로필이있는 AWS S3에서 파일 읽기다운로드
Martin Thoma

코드에 키를 사용해 보셨습니까? (또한 코드에서 그것을 숨기기 위해 ENV VAR를 사용할 수 있습니다)client = boto3.client('s3', aws_access_key_id = '<access-key>', aws_secret_access_key = '<secret-key>')
이반 카라 스코 Quiroz에게

답변:


225

나는 문서가 이것을하는 방법을 공개하는 데 훌륭하지 않다고 생각합니다. 하지만 한동안 지원되는 기능 이었지만이 풀 리퀘스트 에 몇 가지 세부 사항이 있습니다.

따라서이를 수행하는 세 가지 방법이 있습니다.

옵션 A) 프로필을 사용하여 새 세션 만들기

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

옵션 B) 코드에서 기본 세션의 프로필 변경

    boto3.setup_default_session(profile_name='dev')

옵션 C) 환경 변수를 사용하여 기본 세션의 프로필 변경

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

1
env 변수는 AWS_PROFILE이 아니어야합니까?
Stefano M

감사합니다! 지금까지 그 정보를 찾지 못한 것 같습니다. 그래도이 작업을 수행하려면 2 단계 만 필요한 것 같습니다. 1 단계는 무엇을 했습니까? (dev 변수가 사용되지 않거나 다른 것으로 전달되지 않았기 때문에?)
Mark

40
이는 단계가 아니라 옵션입니다. 첫 번째 옵션에서는 기본 세션 대신 사용할 새 세션을 만듭니다. 해당 세션에 클라이언트를 만들 그래서 당신은 같은 것을 할 것 dev.client('s3')대신에boto3.client('s3')
조던 필립스

주제에서 벗어난 ipython것도 나에게 유용했습니다.
Mike D

7
사용하여 프로필 목록을 가져옵니다 boto3.session.Session().available_profiles-목록입니다. 그런 다음 @ jordan-phillips 원하는 것을 사용하십시오.
Daisuke Aramaki

35

이름이 'dev'인 프로필을 사용하려면 다음을 수행하십시오.

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

24

boto3 문서 의이 섹션 이 유용합니다.

나를 위해 일한 것은 다음과 같습니다.

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

5

클라이언트 호출 전에 세션 구성에 프로필을 추가하기 만하면됩니다. boto3.session.Session(profile_name='YOUR_PROFILE_NAME').client('cloudwatch')

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.