Infra/AWS
AWS IAM(내 AWS 계정에 접근하기 - 로컬에서 AWS 접속)
민돌v
2021. 9. 27. 17:49
IAM - Identity and Access Management
- IAM은 AWS 내의 계정을 관리하는 서비스 입니다.
- IAM을 이용하여 사용자 계정을 만들어, 이 사용자 계정을 통해 프로그램에서 AWS에 접근할 수 있도록 합니다.
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 파일 업로드 후, 파일의 권한을 퍼블릭하게 변경하면 버킷 앤드포인트로 확인이 가능합니다!