새소식

300x250
6. DevOps/AWS 기초편

[AWS] 6-2. AWS - AWS Transfer로 FileZilla(+MobaXterm)로 S3 파일 전송하기(1)(AWS Transfer로 Serverless SFTP 구현하기)

  • -
728x90

안녕하세요. 갓대희 입니다. 이번 포스팅은 [ AWS - S3 에 FileZilla, MobaXterm으로 S3 파일 전송해보기 입니다. : )

0. 들어가기 앞서

 - AWS는 EBS, EFS, FSx, S3, Glacier 등등, 요구사항에 맞춰 다양한 스토리지 서비스를 제공한다.

 - 예전에 SFTP를 사용하기 위해 리눅스에 직접 SFTP 설치, 설정을 했었던 기억이 있다. (https://goddaehee.tistory.com/73)

 - AWS Transfer Family와 S3를 통해 구지 서버 없이도, 즉 Serverless 하게 SFTP를 구현할 수 있어 이와 관련된 실습을 해보려 한다. 

 

1. AWS Transfer Family 란? 

https://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/what-is-aws-transfer-family.html

 - AWS S3 또는 EFS 서비스에 파일을 직접 송수신할 수 있는 완전관리형 서비스 이다.

 - 즉, AWS Transfer Family 서비스로 SFTP이 구축이 가능하며, 저장소는 S3와 EFS를 사용할 수 있다.

 - AWS Transfer의 가격은 하기 내용을 참고 하도록 하자.

https://aws.amazon.com/ko/aws-transfer-family/pricing/

 - 실습 이후 하기 튜토리얼 문서를 참고하여 더 자세한 내용을 확인하면 좋을 것 같다.

https://docs.aws.amazon.com/ko_kr/transfer/latest/userguide/getting-started.html

 

※ 비용이 싸진 않기 때문에 꼭 써야 할까? SFTP에 접속할 수 있는 엔드포인트를 기준만으로도 비용이 어느정도 발생하기

때문에 실무환경이 아닌 경우 꼭 죽여 놓길 바란다. ㅠㅠ

실제 나의 약 한달간 사용했을때의 비용 예시.. 

 

2. SSH 퍼블릭 키 생성

SFTP의 경우 인증을 위해 SSH키 파일이 필요하다.
AWS Transfer에 유저를 생성할 예정이고, 해당 유저에게 부여할 SSH 키를 미리 만들어 주자.

 

1) PuTTygen - Download : https://www.puttygen.com/

 - 본인의 환경에 맞는 PUTTYgen을 다운 로드 한다.

 

 - PuttyGen을 실행 후 Generate 버튼을 클릭한다.

 

2) Public Key와 Private Key 생성

 - 난수 생성을 위해 화면안에서 마우스를 움직이라고 요청하니, 이리 저리 움직여 준다.
① Public Key : AWS Transfer Family SFTP 서버 생성시 공개키입력에 복사해야 한다. 퍼블릭 키를 복사해 별도로 저장해보자.
② Private Key : 적당한 파일명으로 저장 후 Client에서 키 인증시 사용

 

3. AWS Transfer 생성 전 사전 설정

1) 데이터를 저장할 S3 버킷 생성

 - AWS Transfer는 S3 혹은 EFS로 파일 전송이 가능한데, 이번 포스팅에서는 S3에서 파일을 저장할 예정이다.
 - 원하는 버킷 이름을 입력하고 기본셋팅대로 생성 (이번엔 모든 퍼블릭 엑세스 차단도 체크해 보자.)

 

2) IAM 역할 생성 - S3에 접근을 위한 역할(role)생성

 - AWS Transfer에서 S3에 데이터를 읽고 쓰기 위해서는 해당 버킷에 접근하기 위한 역할이 필요 하다.

 

 - IAM > 역할 > "역할 만들기" 클릭.

 

 - 서비스 또는 사용 사례 > "Transfer" 검색, 클릭.

 - "Transfer" 클릭 및 "다음" 클릭 하여 진행 하자.

 

 - 권한 중 AmazonS3FullAccess 를 선택한다.

   (추후에 사용자, 유저별로 권한 제한할 예정이기 때문에 일단 FullAccess를 부여한다.)

 - 적절한 이름으로 역할을 생성한다. > "다음" 클릭하여 진행.

ex) AWSTransfer-S3-Full-Role

 

4. AWS Transfer 생성

 - AWS Transfer로 이동 > 서버 생성을 클릭 한다.

 

 - 1단계 (프로토콜 선택) : 활성화 프로토콜중 "SFTP"를 선택한다.

 - 2단계(자격 증명 공급자 선택) : "서비스 관리형" 클릭

 - 3단계(엔드포인트 선택) : "공개적 엑세스"를 선택하고 호스트이름은 없음으로 선택합니다. 

   ( 참고, Route53을 통해 엔드포인트를 보유한 도메인으로 연결시킬 수 있다. 하지만 해당 내용은 추후 진행)

 - 4단계(도메인 선택) : "Amazon S3"를 선택. 이번엔 S3를 통한 설정 실습을 진행 한다.

 - 5단계(추가 세부 정보 구성) : 기본 설정 그대로 진행 한다.

 - 6단계(검토 및 생성) : 설정한 내용을 검토 후 진행 한다.

 - 정상적으로 신규 AWS Transfer가 생성된 것을 볼 수 있다.

 

5. AWS Transfer 유저 생성

 - 생성된 서버를 클릭하여 상세 페이지로 이동 > "사용자 추가" 클릭.

 - 사용할 사용자 이름을 입력.

 - 역할은 내가 위에서 생성했던 역할을 선택한다. (나의 경우 AWSTransfer-S3-Full-Role)

 - 정책은 없음으로 선택.

 - 내가 생성했던 s3 선택 및 홈 디렉터리 지정

 - 위에서 생성했던 "SSH 퍼블릭 키"를 입력 하고 "추가" 클릭

 

6. 접속 테스트

 - "엔드포인트" url을 복사 한다.

 - SFTP Client 프로그램을 실행시킨 후 다음과 같이 입력 한다. 나의 경우 "파일질라", "MobaXterm"을 통해 접속 해보려 한다.

 

1) Filezilla

 - 새 연결 > 프로토콜은 "SFTP"로 선택, 호스트는 복사한 엔드포인트를 붙여넣자.

 - 사용자 : 내가 만든 사용자명 입력 하고,  puttyGen으로 생성했던 Private 키 파일을 선택 한다.

 - "연결" 을 클릭하면 다음과 같은 경고가 뜨는데 "확인" 클릭.

 - 이후 정상적으로 접속 된 것을 볼 수 있다.

 - 원하는 파일도 전송(더블클릭 또는 드래그) 하면 잘 되는것을 볼 수 있다.

 

 - S3 콘솔에서도 정상 업로드 여부를 확인해 보자.

 

1) MobaXterm

 - Session > SFTP 클릭

 - 호스트 : 위에서 복사하였던 엔드 포인트, Username : 내가 만든 사용자명 입력 하고,  puttyGen으로 생성했던 Private 키 파일을 선택 한다. 이후 "OK" 클릭.

 - 처음 접속시 나오는 문구도 확인 후 "Accept" 클릭.

 - 정상적으로 접속 되는것을 볼 수 있다. 

 

 - 이번 포스팅에서는 AWS Transfer를 통해 간단히 Serverless 로 SFTP 서버를 구축해보았다.

 - CloudFormation 템플릿으로 미리 구성해 둘 수도 있는데, 이번 포스팅에서는 해당 내용은 생략 하려고 한다. 

300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.