일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SSA
- wetube
- RDS
- async
- EC2
- Class
- pandas
- node
- Vue
- docker
- merge
- crud
- NeXT
- TypeScript
- 카톡
- Props
- react
- 중급파이썬
- 채팅
- MongoDB
- dict
- AWS
- 튜플
- S3
- socket io
- flask
- SAA
- lambda
- git
- 파이썬
- Today
- Total
초보 개발자
AWS S3, IAM 본문
AWS는 여러나라에 데이터 센터를 갖고있다.
데이터 센터가 있는 나라를 리전이라 하고, 리전 내의 데이터 센터 위치를 존이라고 한다.
만약 서울에 데이터 센터가 영등포, 강남에 위치하면 서울리전에 영드포 존, 강남 존 이라고 불린다,
버킷은 내가 파일을 저장하는 폴더라고 생각하면 된다. 버킷 생성시 일단 아무것도 건들지 말고 생성해주자
파일을 업로드하면 버킷에 잘 등록이 되는 것까지 확인할 수 있다. 업로드하면 객체 URL이라는 것이 생성이 되어 클릭하면 이미지에 접근할 수 있는 Url을 제공해 준다. 하지만 그걸 클릭하면 브라우저에서 실행이 되면서
접근 권한 없다고나온다. 즉 브라우저에서 열 수 있으려면 모든 사람들이 읽을 수 있는 권한이 있어야한다.
근데 우리는 처음에 버킷의 주인만 읽을 수 있도록 설정해놔서 (모든 퍼블릭 차단) 브라우저에서 열 수 없는 것이었다.
이 것을 고쳐주려면 버킷의 권한을 편집시켜주어야 한다,
전부 차단이 되어었던 걸 다 풀어주겠다.
그리고 저장버튼을 눌러주자
버킷의 권한이 퍼블릭하게 열렸다고 해서 기존에 올린 파일들이 자동적으로 퍼블릭으로 변하지 않기에 이를 변경해준 뒤 다시 브라우저에서 실행시켜보자
편집이 안눌리는데 ACL을 비활성화 해주면 된다,
이를 읽기로 바꿔줘보자
그러고 다시 사진을 클릭하면 이제서야 브라우저에서 볼 수가 있다.
IAM의 사용자를 만들어 주자.
파이썬이랑 연동을 하기 위해서 사용한다고 한다.
s3fullaccess를 누르고 태그는 생략해주자
https://awscli.amazonaws.com/AWSCLIV2.msi
AWS SDK를 설치해줘야 한다고 한다. 이걸 사용하면 개발과 연동해서 AWS를 사용할 수 있다고 한다.
따라서 AWS CLI를 우분투에 설치해주었다.
sudo apt-get update
sudo apt-get install awscli aws --version
아까 받아온 id와 key값을 아래에 적어주었따.
aws configure
AWS Access Key ID []: AKIAXXXXXXXXXX
AWS Secret Access Key []: XXXWfz2aveXXXXXXXXXXXX
Default region name [ap-northeast-2]:
Default output format [None]: json
파일이 있는 폴더에서
aws s3 cp {파일명} s3://{버킷이름} --acl public-read
이렇게 명령문을 적으면 해당 s3에 파일이 생성된다고 한다.
이렇게 해주니 나의 버킷에 잘 전송이 된 것을 확인할 수 있다.
미루어보건대, 우리가 만든 S3는 파일저장소인 것 같고 IAM은 사용자인 것 같다. S3를 사용하기 위해서 사용자가 필요하고, 그 사용자는 S3의 접근할 수 있는 권한이 필요하다. 그래서 그걸 아까 설정해 준것이고,. 그리고 사용자의 id와 secret을 이용해서 cli에서 접근할 수 있도록 하였다..
그래서 우리가 방금 적은 명령어로 cli에서 s3에 접근할 수 잇었던 것이다.. 근데 여기서 의문이 그럼 특정 s3말고
모든 s3에 다 접근이 가능한것인가?
플라스크와 연동해서 올려주는 방법을 배우고 있는데 파이썬에서 s3와 연동을 할려면 boto3가 필요하다
aws와 연동하게 해주는 라이브러리다 pip install boto3을 해주자
아까는 cp를 이용해서 올렸지마 여기선 put_object로 파일을 올린다.
bucket에는 버킷이름이 들어가고 ACL은 public-read를 해주어 브라우저에서도 열 수 있도록 해주었다.
body에는 file이 key에는 파일이름 등이 들어간다..
여기선 따로 IAM을 연동시켜주지 않는 것 같다? 라고 생각했는데.
터미널에서 사용자와 연동을 시켜주어야지만 사용이 가능하다.
연동이 되어있지 않으면 아래와 같은 오류가 발생한다
botocore.exceptions.NoCredentialsError: Unable to locate credentials
사용자를 처음에 우분투에 넣어서 연동해줬었는데 실습은 cmd에서 돌렸다. 따라서 cmd에서는 사용자를 인식을 못하고 있던 상태였다. 따라서 똑같은 사용자도 cmd에서 인식을 시켜주고 여기서 말하는 인식은 aws conifgure.
이걸 해 준 뒤로 오류가 나지 않는다.
꼭 IAM과 미리 연동을 시켜주어야 한다.
'AI 웹개발 트랙 - 내배캠 > 7주차' 카테고리의 다른 글
cloud front, github action (0) | 2022.01.28 |
---|