파이썬 (boto3)에서 자격 증명을 전환하는 8 가지 방법

5286 단어 Python3boto3AWS

소개



AWS의 각종 리소스를 Python으로 컨트롤 할 때 사용하는 boto3이지만 자격 증명을 전환하는 방법에는 여러 가지가 있으며 우선순위가 혼란스러울 수 있기 때문에 복습을 겸해 조사해 보았습니다. 이제 AWS 환경 전환도 쉽습니다.

boto3의 자격 증명 검색 순서



boto3은 다음 순서로 자격 증명을 검색하고 사용합니다.
  • boto.client () 메소드의 파라미터로서 건네받은 자격 증명
  • 세션 객체를 만들 때 매개 변수로 전달 된 자격 증명
  • 환경 변수
  • 공유 자격 증명 파일(~/.aws/credentials)
  • AWS config 파일(~/.aws/config)
  • Assume Role provider
  • Boto2 config 파일 (/etc/boto.cfg , ~/.boto)
  • IAM 역할이 구성된 Amazon EC2 인스턴스의 인스턴스 메타 데이터 서비스

  • 이하, YOUR_ACCESS_KEY, YOUR_SECRET_KEY는 적절하게 자신의 환경의 값으로 읽어내 주세요.

    1. boto.client() 메소드의 파라미터로서 건네받은 자격 증명


    import boto3
    
    client = boto3.client(
        's3',
        aws_access_key_id=YOUR_ACCESS_KEY,
        aws_secret_access_key=YOUR_SECRET_KEY,
    )
    

    boto3.client를 호출할 때 명시적으로 사용하려는 환경의 자격 증명 정보를 전달하는 방법입니다.
    실제의 값은 환경 변수 경유로 취득하는 등으로 해, 코드내에 원의 값을 기입하는 것은 회피하는 것이 좋다.

    2. Session 객체를 만들 때 매개 변수로 전달된 자격 증명


    import boto3
    
    session = boto3.Session(
        aws_access_key_id=YOUR_ACCESS_KEY,
        aws_secret_access_key=YOUR_SECRET_KEY,
    )
    

    1과 마찬가지로 boto3.Session을 만들 때 명시 적으로 사용하려는 환경의 자격 증명을 전달하는 방법입니다.

    3. 환경 변수


    export AWS_ACCESS_KEY_ID=YOUR_AWS_ACCESS_KEY_ID
    export AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_ACCESS_KEY
    

    Python을 실행하는 환경의 환경 변수에 자격 증명 정보를 설정하면 boto3이 참조합니다.
    자격 증명 전환이 발생하지 않는 경우에는 간단한 방법이며 사용하는 경우도 많습니다.

    4. 공유 자격 증명 파일(~/.aws/credentials)



    ~/.aws/credentials
    [your_profile_name]
    aws_access_key_id = YOUR_ACCESS_KEY
    aws_secret_access_key = YOUR_SECRET_KEY
    
    import boto3
    
    session = boto3.Session(profile_name='your_profile_name')
    client = session.client('s3')
    
    ~/.aws/credencials 로 프로파일 별로 aws_access_key_id , aws_secret_access_key 를 설정한 후 boto3에서는 설정한 프로파일 이름을 지정합니다.
    awscli로 친숙한 방법으로 설정한 프로파일 정보를 이용할 수 있으므로 시인성이 뛰어나 로컬 개발 환경에서도 자주 이용합니다.

    5. AWS config 파일(~/.aws/config)



    ~/.aws/config
    [profile YOUR_PROFILE_NAME]
    region = YOUR_REGION
    output = TOUR_OUTPUT
    aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
    aws_secret_access_key = YOUR_SECRET_KEY
    
    aws configure 명령으로 자격 증명을 설정하면 access_key_idsecret_access_key는 자격 증명 파일에 나열됩니다. 이 내용은 config 파일에 기재하는 것도 가능하기 때문에, region이나 output 정보에 가세해, 상기와 같이 크리덴셜 정보를 기재할 수 있습니다.

    6. Assume Role provider



    ~/.aws/config
    [profile YOUR_TARGET_PROFILE_NAME]
    role_arn = YOUR_TARGRT_ROLE_ARN
    source_profile = YOUR_PROFILE_NAME
    

    대상이 되는 AWS 계정의 액세스 키, 시크릿 키를 직접 이용하지 않고, IAM 역할을 통해 조작을 하는 경우는 대상의 AWS 환경에 AssumeRole를 리퀘스트해, 돌려주어진 자격 증명을 이용하는 것으로 조작할 수 있습니다.~/.aws/config 에 이용하는 롤의 ARN과 원이 되는 프로파일명을 설정하는 것으로 이용 가능합니다.

    7. Boto2 설정 파일 (/etc/boto.cfg, ~/.boto)



    boto2와의 역호환성이 있기 때문에, Boto_CONFIG 가 설정되어 있으면 BOTO_CONFIG 가 지정하는 파일을 체크해, 그렇지 않으면 /etc/boto.cfg~/.boto 를 체크합니다.

    8. IAM 역할이 구성된 Amazon EC2 인스턴스의 인스턴스 메타데이터 서비스





    Amazon EC2에는 IAM 역할을 할당할 수 있기 때문에 EC2에서 실행 중이며 위의 항목 중 하나가 설정되지 않은 경우 인스턴스 메타데이터 서비스에서 자격 증명을 로드합니다.
    이 기능을 사용하려면 EC2 인스턴스를 만들 때 사용할 IAM 역할을 지정해야 합니다.

    참고문헌



    이 기사는 다음 정보를 참고로 작성했습니다.
  • Credentials — Boto3 Docs 1.14.33 documentation
  • 좋은 웹페이지 즐겨찾기