본문 바로가기

Sparta

[Sparta] 14-3.AWS_IAM

Today I Learned


3. AWS IAM & AWS SDK


1. Amazon IAM



IAM이란?


AWS Identity and Access Management(IAM)는 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다.


사용방법
  1. 프로그래밍 방식 액세스(액세스 키)로 사용자를 추가하여 사용한다.

  2. 권한설정 - 기존 정책과 직접 연결 - S3FullAccess 선택

  3. "액세스 키 ID" 와 "비밀 액세스 키" 를 발급받음 (유출 되지않게 조심)


1-1. Amazon IAM 추가 설명

IAM에 대한 이해도를 높이기 위해 추가 설명이 필요할 것 같다. IAM은 어떤 사용자나 그룹이 내 AWS 리소스에 접근 할 수 있도록 하고 싶을 때 활용 될 수 있다. IAM 자격 증명(사용자, 그룹, 역할)을 생성하고 해당 자격 증명에 사용자 지정 권한 세트(IAM 정책)를 할당할 수 있다. 이렇게 하면 각 사용자가 작업을 수행하는 데 필요한 서비스, 리소스 및 정보만 액세스하도록 허용할 수 있다.


쉽게 말해, AWS의 리소스에 대한 개별적으로 접근제어와 권한을 가지도록 계정 또는 그룹을 생성, 관리하는 서비스라고 할 수 있다. 어떤 IAM 계정은 EC2 서비스만 접근할 수 있도록 권한을 부여하고, 다른 IAM 계정은 S3 서비스만 접근할 수 있도록 권한을 나누는 식으로 말이다. 아래의 사진이 이를 잘 설명해준다.



하나의 계정에 그룹과 사용자를 나눠 이들이 각각 접근 할 수 있는 권한을 각기 달리 부여할 수 있다. 프로그래밍을 완성하고 이를 AWS를 활용하여 배포하거나 저장할 때, 각각 부여받은 권한까지 접근 할 수 있는 것이다. 이는 액세스 키 ID(AWS_ACCESS_KEY_ID)와 비밀 액세스 키(AWS_SECRET_ACCESS_KEY)로 구분된다.


2. Amazon SDK



SDK는 Software Development Kit의 약자로 프로그래밍을 돕는 라이브러리라고 생각하시면 됩니다. AWS SDK를 이용하시면 개발과 연동해서 AWS를 사용할 수 있게됩니다.


SDK란?

소프트웨어 개발 키트(Software Development Kit, SDK)는 (일반적으로) 하드웨어 플랫폼, 운영 체제(Operatting System, OS) 또는 프로그래밍 언어 제작사가 제공하는 일련의 툴입니다. 소프트웨어 개발자는 SDK를 활용하여 특정 플랫폼, 시스템 또는 프로그래밍 언어에 따라 애플리케이션을 개발할 수 있습니다. 이를 직접 조립할 수 있는 옷장에 포함되어 있는 도구 키트라고 생각하시면 쉬울 것 같습니다. SDK는 애플리케이션 개발에 사용된다는 것만 다를 뿐입니다. 작업 완료에 필요한 요소 또는 개발 툴은 제공되지만 키트에 포함된 내용물은 제작사마다 다릅니다.


일반적으로 기본 SDK에는 컴파일러, 디버거, 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)가 포함되지만, 다음 중 한 가지도 포함될 수 있습니다.


  • 설명서
  • 라이브러리
  • 편집기
  • 런타임/개발 환경
  • 테스트/분석 툴
  • 드라이버
  • 네트워크 프로토콜

양질의 SDK라면 개발자가 특정 제품 및 에코시스템을 위한 새로운 애플리케이션을 개발할 때 필요할 수 있는 모든 구성 요소를 제공할 것입니다. 일부 SDK에는 개발자가 최대한 빨리 시작할 수 있도록 예시 또는 기본 테스트 프로젝트도 포함되어 있습니다.


소프트웨어 개발 키트의 몇 가지 예로 Java 개발 키트(Java Development Kit, JDK), Windows 7 SDK, MacOS X SDK, iPhone SDK를 들 수 있습니다. 구체적인 예를 들자면, 쿠버네티스 오퍼레이터 SDK는 개발자가 자기만의 쿠버네티스 오퍼레이터를 개발하는 데 도움이 됩니다. 이 SDK에는 상위 수준의 API, 스캐폴딩 및 코드 생성용 툴, 그리고 공통된 오퍼레이터 활용 사례를 포괄하는 확장 기능이 포함되어 있습니다.


SDK의 종류


  • 안드로이드 SDK : 안드로이드용 앱개발을 위한 도구
  • JDK : 자바 개발자를 대상으로 오라클에서 제공하는 도구
  • Facebook SDK
  • IOS SDK
  • PhysX : NVIDIA에서 제공하는 물리 엔진 미들웨어 도구
  • TIZEN : 휴대 전화를 비롯한 휴대용 장치를 주로 하며, TV, 냉장고와 같은 모든 전자기기에 포함을 목적으로 하는 오픈 소스 모바일 운영 체제이다. 삼성전자, 리눅스 재단, 리모 , 인텔이 공동 개발하였으며 개발을 위한 SDK를 제공한다.
  • Windows SDK : windows 앱 개발을 위한 SDK 제공
  • .NET Core SDK : 마이크로 소프트사에서 만든 SDK, .NET Core 애플리케이션과 라이브러리를 만드는데 사용
  • Source SDK : 소스 엔진 게임에서 콘텐츠를 만드는 데 사용되는 개발 키트

출처


3. S3와 IAM을 연동하기


aws --version
aws-cli/2.2.43 Python/3.8.8 Windows/10 exe/AMD64 prompt/off

aws configure
AWS Access Key ID [None]: <액세스 키 ID>
AWS Secret Access Key [None]: <비밀 액세스 키>
Default region name [None]: ap-northeast-2
Default output format [None]: json

# 업로드
aws s3 cp {파일명} s3://{버킷이름} --acl public-read

# ex 파일이 있는 폴더로 이동 후) 
aws s3 cp diff.png s3://lukaidsparta --acl public-read

4. 파이썬과 연동하여 사용하기


Boto3란?


S3를 Python에서 이용하기 위해 사용하는 라이브러리

Boto3를 사용하면 Python 애플리케이션, 라이브러리 또는 스크립트를 Amazon S3, Amazon EC2, Amazon DynamoDB 등 AWS 서비스와 쉽게 통합할 수 있습니다.


@app.route('/fileupload', methods=['POST'])
def file_upload(): # 파일 업로드 API
    file = request.files['file'] # 프론트에서 업로드 되는 파일의 정보
    s3 = boto3.client('s3') # s3와 연동
    s3.put_object(
        ACL="public-read", # 권한
        Bucket="lukaidsparta", # 내 버킷 이름
        Body=file, # 업로드 할 파일
        Key=file.filename, # 업로드 할 파일 이름
        ContentType=file.content_type) # 업로드 할 파일 형식
    return jsonify({'result': 'success'})

5. 정적웹호스팅


S3 기능에는 단순히 저장하는 기능 이외에 정적 웹 사이트 호스팅 기능이 있다.


S3 > 속성 > 정적웹호스팅 > 편집 > 활성화 선택

  1. 호스팅 유형에서 정적 웹 사이트 호스팅 선택
  2. 인덱스 문서에 index.html을 입력
  3. 오류 문서에도 index.html을 입력
  4. 저장
  5. 맨 아래에 정적 웹 사이트 호스팅에 버킷 웹 사이트 엔드포인트 확인
  6. S3에 index.html 업로드 후 권한 설정
  7. 버킷 웹 사이트 엔드포인트의 주소로 접속

'Sparta' 카테고리의 다른 글

[Sparta] 15-1. GitHub Actions  (0) 2021.10.07
[Sparta] 14-4 AWS_CloudFront  (0) 2021.10.05
[Sparta] 14-2.AWS_S3  (0) 2021.10.05
[Sparta] 14-1. 2차 프로젝트 발제  (0) 2021.10.05
[Sparta] 13. 발표 및 구현테스트  (0) 2021.10.01