본문 바로가기
공부/AWS

[AWS] AWS Transfer 사용해보기 (Serverless SFTP 구현)

by haejang 2021. 6. 1.
728x90
728x90

 

참고

 

목차

1. AWS Transfer란? + FTP, FTPS, SFTP

2. 사전 준비 사항(SSH 퍼블릭 키, S3 버킷, IAM 역할)

3. AWS Transfer 생성

4. 사용해보기

 


 

1. AWS Transfer란? + FTP, FTPS, SFTP


AWS Transfer Family란, AWS 스토리지 안팎으로 파일을 전송할 수 있는 보안 전송 서비스이다

FTP, FTPS, SFTP 프로토콜을 사용할 수 있으며, S3 또는 EFS와의 데이터 전송을 지원한다

 

1. FTP (File Transfer Protocol) - Port 21
- 원격 host로 파일을 송수신하는 프로토콜
- client-server 모델
- 단순하지만 보안이 약하다

2. FTPS - Port 21, 20
- HTTP-HTTPS 와 같은 경우
- TLS/SSL을 거치는(공개키 암호화 방식 사용) FTP

3. SFTP (Secure File Transfer Protocol) - Port 22
- SSH의 파일 전송 버전, FTP보다 보안 강화
- 파일/시스템 관리도 쉬워서 현업에선 거의 SFTP만 사용

 

참고로 2018년에 SFTP용으로 출시된 완전관리형 서비스였고, 2020년에 FTPS 및 FTP까지 사용할 수 있게 되었다

 

아키텍처는 아래와 같다

본 실습에선 SFTP 통신을 사용해 S3에 연결해보겠다

 

2. 사전 준비 사항(SSH 퍼블릭 키, S3 버킷, IAM 역할)


2-1) SSH 퍼블릭 키 생성

PuTTYgen(Window) 사용 (다른 방법 사용해도 무관)

 

위에서 보는 것처럼 public/private key pair를 생성 후 각자를 잘 저장해주면 된다

 

2-2) S3 버킷 생성

AWS Console > S3 > 버킷 만들기

 

 

버킷 이름은 고유해야 하므로 자신의 이름을 같이 넣어서 만들어주자

 

2-3) IAM 역할 생성

AWS Console > IAM > 역할 > 역할 만들기

 

사용 사례에서 Transfer 선택
권한 정책 연결에서 AmazonS3FullAccess 선택

이름만 대충 정해줘서 생성 완료해주면 끝이다

 

3. AWS Transfer 생성


AWS Console > AWS Transfer Family

3-1) 서버 생성

콘솔의 서버 생성 클릭

SFTP 통신을 할 것이므로 SFTP만 선택 (여러 개 선택 가능)
서비스 관리형 선택
내부통신이 아니므로 공개 액세스 / 사용자 지정 호스트 이름을 통해 DNS도 설정 가능하다
S3 선택

나머진 기본 설정 그대로 두고 생성을 완료해주자

 

3-2) 사용자 생성

생성된 서버 ID 클릭 > 중간의 사용자 추가 클릭

 

 

접속할 사용자의 이름을 지정해주고, 위에서 만든 IAM 역할을 붙여준다

홈 디렉토리에는 위에서 만든 S3 버킷을 지정해주면 된다 (밑엔 하위폴더 이름 - 직접 지정해도 됨)

해당 유저가 지정된 홈 디렉토리 외에는 접근이 불가능하도록 하려면 "제한됨" 도 선택해주자

 

 

SSH 퍼블릭 키엔 따로 복사해뒀던 퍼블릭 키를 넣어주면 된다

 

4. 사용해보기


서버가 온라인 상태로 올라왔다면, SFTP를 지원하는 아무 프로그램을 열어 접속해보자

(여기선 mobaXterm 사용)

 

 

서버의 엔드포인트 복사 후 SFTP 프로그램의 새 세션을 열자

 

 

위처럼 서버 엔드포인트와 사용자 이름, private key까지 입력한 후 접속해보면

 

 

바로 접속된다. 오른쪽 부분은 S3 영역이니 아무거나 몇 개 옮겨보겠다

 

잘 옮겨진다

S3에서 확인해보면

 

 

처음에 만들었던 S3 버킷의 사용자이름 폴더에 데이터들이 잘 들어와있는걸 확인할 수 있다

 

 


결론

SFTP, FTP 서버를 따로 설정하지 않고 간편하게 사용할 수 있단게 정말 편리한 것 같다

그러나 편하고 좋은건 역시 비싸다 - 가격 확인

 

21/06/01 서울 기준

엔드포인트 활성 시간당 $0.3에다가, 데이터 전송 시 GB당 $0.04이다

본 실습처럼 S3에다가 데이터를 옮기는 경우엔 솔직히 비효율적인 것 같다 (awscli s3 명령이 훨씬 나을듯)

그러나 SFTP 서버를 AWS 내에 구축해야 하는 경우에 EC2 + EBS + 서버 세팅(노동력) 등등을 생각했을 땐 나쁘지 않은 선택인 것 같으며, EFS에 데이터를 옮겨야 할 경우 굉장히 편리할 것 같다

 

 

 

728x90
728x90

댓글