brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jul 24. 2020

418.  S3에 데이터 넣기

S3  이해하기


<1>  AWS에서 S3 에 데이터 넣는 방법은 4가지가 있다.

<2> AWS에서 S3 에 데이터 넣는 경로는 2가지 이다.

<3> 실습 :  EC2에서   S3로 데이터 올려 보자.




<1>   S3 에 데이터 넣는 방법.



1. 콘솔계정에    S3 권한을  부여해서 데이터를 넣는법

Access-key 없음.


2.  Access-key 계정을 만들어  S3 권한을  부여해서 데이터를 넣는법  (access-key)

Access-key , Secret-Key를 사용한다.


3.  S3  버킷에 정책을 넣어 사용자를 관리하는 법  

Access-key는 발급하나,  권한은 없다.  권한은 S3 버킷에 준다.


4. 역할(정책)을 만들어  EC2에 적용하여  EC2 에서 S3 에 데이터를 넣는법

Access-key 없음.

역할이 들어간 EC2에서 S3로 버킷을 넣는 법이다.






<2> AWS에서 S3 에 데이터 넣는 경로는 2가지 이다.



인터넷으로 데이터를 넣는경로 

내부 Endpoint를 이용하는 방법이다.



1.  인터넷으로 데이터는 넣는 경로





2. VPC 안에 서버가 있을때 인터넷으로 넣는 경로


서버 -----  IGW ----- S3 경로



3.  VPC  안에 서버가 있을때  내부 통신(Endpoint)를 이용해 S3에 데이터를 넣는법

// 보안상  VPC Endpoint설정을 권장한다.


1)  서버 ---------    VPC Endpoint  --------- S3  구성이다.

 VPC Endpoint 설정을 해야 한다.




<3> 실습 :  EC2에서   S3로 데이터 올려 보자.



1. 구성

2. EC2 접속

3.  액세스 키로   S3  접속하기

4. access key 제거하고 데이터 올리는법

5.  특정버킷만 사용 가능하게  제한하기

6.  VPC endpoint에서만  S3버킷  허용되는지 확인해보기

7.   VPC endpoint  적용하여  S3버킷에 데이터 올리기 



1.  구성

 

사용자-------- EC2 (node로 웹사이트)  -------------- S3


#  사전 작업


1) S3 버킷 생성  

seo-up-s3


2) S3  Endpoint  설정하기

vpc > endpoint  >  S3 


3) EC2 생성,  node  설정하기




2.   EC2 접속

ssh 로  public ip로 서버 접속하기



3.  액세스 키로   S3  접속하기


1)

EC2 접속 > pwd

node 설치



2)  수정하기


vi server.js

//configure the AWS credentials used for file upload
AWS.config.update({
accessKeyId: "ENTER ACCESS KEY",
secretAccessKey: "ENTER SECRET ACCESS KEY"

});


bucket: 'ENTER BUCKET NAME'


// 다음은 임시 테스트용으로 소스에 Access key를 넣는다. 

보안상 넣으면 안되는것이다.

git에 올라가 해킹당할수 있으니 임시로만 사용하고 지우기 바란다.


3)

// 80으로 오면  3001로 전달

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3001


npm start


4)

공인 IP로 웹 접속해보기


5)

웹사이트에서  S3로  이미지 파일 올리기

// EC2 -> IGW 를 통해   S3 로 접속하는 경우이다.


6)

S3버킷에 올린 파일이 있는지 확인하기

// 웹서버에 액세스 키와 보안키가 올라가 있는 경우이다.

보안에 취약하니 제거하는 방법으로 운영해보자.




3. Access key 제거하고 데이터 올리는법


1)

 vi server.js

애세스 키와 보안키를 //로  주석문 처리하라


2)

파일을 업로드해보라.

업로드 실패


3)

파일 업로드 가능한 역할 만들기

EC2에 역할 연결하기


4)

파일을 업로드해보라.

업로드 성공




4.   특정버킷만 사용 가능하게  제한하기


1) 

파일 리스트만  보는 게 가능한 역할 만들기

EC2에 역할 연결하기


2)

공인 IP로 웹 접속해 파일 올리기

오류남


3)

aws s3 ls

잘 됨.


4)

aws s3 cp mytestfile.txt s3://bucket name/

오류남


5)

AWS 계정 ID와  역할  ID 확인하는 명령어

aws sts get-caller-identity


6)

서비스 > S3  >  버킷 ARN  복사

arn:aws:s3:::lab-d3101fe0


7)

정책 편집기 사용해보기

https://awspolicygen.s3.amazonaws.com/policygen.html


s3 Bucket policy

Principal  에  S3listroleARN   입력 

arn:aws:iam::830396134372:role/qls-16953643-9ea78f24ed3e10f-InstanceIamRoleS3List-5YJEA9CG14HN


Actions 

Putobject

PputobjectAcl

ARN (버킷  ARN) 

arn:aws:s3:::lab-d3101fe0,arn:aws:s3:::lab-d3101fe0/*


ADD Condition 

stringlike

key

aws:userid

values   // AROA ID , 

AROA4xxxxxL6ZTZCW5:i-0d7xxx781a4f62


> Add statement  > Generate policy  > 정책이 만들어진다



// 참고 

AROA role ID 

https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids



8)

서비스 >  s3  > 퍼미션   >  버킷 정책

만들어진 정책 입력


9) 

ec2에 ssh 로 로그인

npm  start





5.   VPC endpint에서만    S3  버킷  허용되는지 확인해보기


1

서비스 >   VPC >  앤드포인트>  라우팅 테이블   >  라우팅 테이블 관리 클릭 >  subnet1  체크 지우기  

> 수정 라우팅 테이블


2

테이터 올려 보기




감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari