구름

profile로 boto3 자격증명하기 (AWS CLI SSO도 가능) 본문

Code/IaC

profile로 boto3 자격증명하기 (AWS CLI SSO도 가능)

Cloudest 2021. 5. 13. 15:03
💡
준비물
AWS-CLI, Python, Boto3환경

시작 전

boto3를 처음 접할 때 보통 자격증명에 AWS Configure를 사용하거나 직관적으로 Access Key를 직접 입력한다.

하지만

AWS CLI에서 SSO를 사용한 접속

과 같이 Access Key가 없는 환경에서도 스크립트를 사용하고 싶었다.

 

AWS CLI에서 SSO로 로그인한 경우 C:\Users\[사용자]\.aws\config 경로에 session profile이 저장되는데, 이 profile을 사용해서 Access Key없이도 boto3를 사용할 수 있다.

기존 자격증명

AWS CLI에서 스크립트를 사용하기 위해 .py파일에 boto3를 사용한다.

  • AWS Configure를 사용해서 자격 증명하기
    1. Powershell / bash / terminal 등에서 AWS Configure 설정하기
    1. EC2를 생성하는 간단한 Python 스크립트 test.py 생성
      import boto3  
      
      ec2 = boto3.resource('ec2') ##여기까지 중요하고 이 밑으로는 작동 확인을 위한 코드  
      
      instance = ec2.create_instances(
      	ImageId='ami-0f2c95e9fe3f8f80e',
          MinCount=1,
          MaxCount=1,
          InstanceType='t2.micro',
      ) 
      
      print(instance[0].id) #생성된 EC2의 id를 확인하는 코드
    1. Powershell에서 test.py 스크립트 실행 및 결과
    1. 콘솔에서 결과 확인
    • 장점 : 간단하다
    • 단점 : 적용 계정 변경시 AWS Configure 값을 매번 변경해야한다. (다중 계정 동시작업에 불편)
  • Access Key와 Sercret Key를 입력해서 자격 증명하기
    1. access_key와 secret_access_key를 입력해서 작동하는 test.py 생성
      import boto3
      
      access_key ='[Access Key]'
      secret_access_key = '[Secret Key]'
      region = 'ap-northeast-2'
      
      ec2 = boto3.resource('ec2',
                         aws_access_key_id=access_key,
                         aws_secret_access_key=secret_access_key,
                         region_name=region)
      
      
      instance = ec2.create_instances(
          ImageId='ami-0f2c95e9fe3f8f80e',
          MinCount=1,
          MaxCount=1,
          InstanceType='t2.micro',
      )
      print(instance[0].id)
    1. python test.py 명령으로 테스트하면 Access_key를 가진 계정에 ec2가 생성된다.

     

    • 장점 : 여러 계정을 바꿔가면서 사용할 때 스크립트만 바꿔주면 된다.
    • 단점 : Access Key를 노출해야하거나 (변수파일 생성 후 참조하는 방법이 있을 것이다.), AWS SSO로 로그인한 경우 Access Key를 부여하지 않는다.

Profile로 자격증명

AWS SSO 로그인 및 profile 정보 확인방법 → AWS CLI에서 SSO를 사용한 접속

  • Profile을 사용해서 자격 증명하기
    1. SSO 로그인 후 설정한 profile_name 을 넣어서 test.py 작성
      import boto3
      
      region = 'ap-northeast-2'
      
      session = boto3.Session(profile_name='[프로필 이름]')
      ec2 = session.resource('ec2',region_name=region)
      
      instance = ec2.create_instances(
          ImageId='ami-0f2c95e9fe3f8f80e',
          MinCount=1,
          MaxCount=1,
          InstanceType='t2.micro',
      )
      print(instance[0].id)
    1. python test.py로 스크립트 실행 및 결과 확인
 

Cloudest - 블로그 이사했습니다

노션으로 블로그를 옮겼습니다.

흥미로운 포스팅이 올라옵니다!

cloudest.oopy.io

Comments