Infra/AWS

AWS IAM(내 AWS 계정에 접근하기 - 로컬에서 AWS 접속)

민돌v 2021. 9. 27. 17:49

IAM - Identity and Access Management


  • IAM은 AWS 내의 계정을 관리하는 서비스 입니다.
  • IAM을 이용하여 사용자 계정을 만들어, 이 사용자 계정을 통해 프로그램에서 AWS에 접근할 수 있도록 합니다.

 

IAM 대시보드

 


 

1. Aws와 프로그램 연동을 위한 계정 만들기

  • 사용자 메뉴 클릭 - 사용자 추가(액세스 유형 - 프로그래밍 방식 엑세스)

 

2. 사용자 권한 부여

  • 생성하는 사용자에게 권한을 부여합니다.
  • 기존 그룹에 추가하는 방법, 기존 사용자 권한 복사, 기존 정책 직접 연결하는 방법이 존재합니다.
  • 처음에는 사용자가 없기때문에 정의되어 있는 저액에 직접 연결하는 방법을 사용합니다.
  • S3를 위한 사용자이기 때문에 AmazoneS3FullAcess 권한을 부여합니다.

키확인

  • 로컬 PC에서 접속을 위해 액세스 키 ID와 비밀액세스 키를 기억해 두어야합니다.

 

 

S3 와 파이썬 연동  - Flask 를 사용하여 S3 업로드 웹페이지 구현


IAM을 사용하는 이유 - S3와 개발언어와 연동하기 위해서 사용

AWS에 접속할 수 있는 사용자 계정을 만들었으니 Flask에서 AWS S3 에 접속해 봅시다.

 

1. boto3 라이브러리 이용

  • boto3 라이브러리를 활용하여 AWS와 연동이 가능합니다
  • boto3 라이브러리 : aws 와 파이썬을 연동하기위한 라이브러리
import boto3
from flask import Flask, render_template, request, jsonify

app = Flask(__name__)

@app.route('/')
def main():
    return render_template('index.html')

@app.route('/fileupload', methods=['POST'])
def file_upload():
    file = request.files['file']
    s3 = boto3.client('s3')
    s3.put_object(
        ACL="public-read",
        Bucket="{버킷이름}",
        Body=file,
        Key=file.filename,
        ContentType=file.content_type)
    return jsonify({'result': 'success'})

if __name__ == '__main__':
    app.run()

 

S3 정적 호스팅 기능을 이용하여 프론트(html) 외부에 공개하기


  • S3 기능 중에 단순 저장 이외에도 정적 웹 사이트 호스팅 기능이 존재한다.
  • 이 기능을 이요하여 프론트 페이지를 구성해보자

  • 기능이 활성화가 되었고, 버킷 웹 사이트 엔드 포인트가 생겼습니다.
  • 엔드 포인트 URL을 이용하면 브라우저에서 사이트를 볼 수 있지만, 현재 index.html 파일을 업로드하지 않았기 때문에 403에러 페이지가 나옵니다.

 

S3에서 index.html 파일 업로드 후, 파일의 권한을 퍼블릭하게 변경하면 버킷 앤드포인트로 확인이 가능합니다!