데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      AWS boto3에서 Multi Account 권한 획득하기 (assume role)

      zero 23.05.15
      2,397 11 0

      boto3?

      boto3는 Python용 AWS SDK로, Python 개발자는 boto3를 활용하여 S3, EC2와 같은 AWS 서비스에 접근하는 프로그램을 쉽게 개발할 수 있습니다.

      boto3로 작성된 Python 프로그램이 동작하기 위해서는 AWS에서 생성된 Credential을 환경변수 혹은

      boto3 config에 입력해 주어야 해당 AWS Account의 권한을 획득할 수 있습니다.

      다만 이러한 경우 단일 AWS Account에 대해서만 컨트롤이 가능한데요,

      assume role 과 boto3.Session을 활용하면 1개 Credential로도 여러 Account의 권한을 획득하여 Python 프로그램을 동작시킬 수 있습니다.


      1. OS(or boto3 config) 내 Credential 설정

      $ cat ~/.aws/credential

      image.png

      -> 1번 Account의 AccessKey를 default credential로 작성합니다.


      image.png

      -> 2번 Account에 IAM Role을 생성하고, 1번 Account에 대해 Trust Relationship을 맺어줍니다.


      $ cat ~/.aws/config

      image.png

      -> ‘cloudta’라는 profile을 작성합니다.

       - role_arn에는위에서 생성한 2번 Account의 ARN을 넣어주고, source_profile에는 1번 Profile(default)을 넣어줍니다.


      2. boto3 코드 작성

      $ cat s3_bucket.py

      import boto3
      
      s3 = boto3.resource('s3')
      
      for bucket in s3.buckets.all():
          print(bucket.name)

      -> boto3 resource로 s3 버킷을 리스팅하는 구문입니다.

      -> default credential로 동작합니다.


      $ cat s3_bucket_cloudta.py

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

      -> boto3 Session을 사용하여 profile을 전환합니다.

      -> cloudta role로 동작합니다.


      3. 테스트 수행

      $ python3 s3_bucket.py

      image.png

      -> default credential로 동작하며, 1번 Account의 S3 리스트를 보여줍니다.


      $ python3 s3_bucket_cloudta.py

      image.png

      -> cloudta role로 동작하며, 2번 Account의 S3 리스트를 보여줍니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      zero 님의 최신 블로그

      더보기
      동영상 기고하기