본문으로 건너뛰기

[S3] S3-EC2 간 데이터 업로드 및 다운로드 가이드

Prerequisite

  • EC2 인스턴스에 S3에 관한 IAM Role이 부여 되어야 합니다.
    • AmazonS3FullAccess 또는 특정 버킷에 대한 s3:PutObject, s3:GetObject 권한
  • EC2에 AWS CLI가 설치되어있어야 합니다.
    • 최신 Amazon Linux 2 AMI를 사용 중이라면 기본적으로 설치되어 있습니다.
    • 설치 확인 명령어: aws --version
  • EC2 인스턴스가 인터넷에 연결되어 있거나, 폐쇄망일 경우 S3용 VPC 엔드포인트가 설정되어 있어야 합니다.
  • EC2 인스턴스 터미널에 SSH접속할 수 있어야 합니다.
  • 알아두기 :
    • PowerShell / 터미널 환경에서 . (마침표 하나)는 현재 내가 위치한 디렉토리를 의미합니다.
    • PowerShell / 터미널 환경에서 pwd 명령어를 입력하여 현재 로컬 경로를 확인할 수 있습니다.

Process

S3 버킷 생성

  1. AWS 콘솔 접속에 접속합니다.

  2. “S3”를 검색하여 접속합니다.

  3. "버킷 만들기"를 클릭합니다.

  4. 버킷 이름 지정을 지정합니다.

    버킷 이름은 3~63자여야 하며 글로벌 네임스페이스 내에서 고유해야 합니다. 또한 버킷 이름은 문자나 숫자로 시작하고 끝나야 합니다. 유효한 문자는 a~z, 0~9, 마침표(.), 하이픈(-)입니다. 
     

  5. 객체 소유권 및 퍼블릭 액세스 설정합니다.

    특별한 사유가 없다면 기본값인 ACL 비활성화(권장)를 유지합니다.
     

  6. 이 버킷의 퍼블릭 액세스 차단 설정을 합니다.

    내부용 파일이라면 그대로 "모든 퍼블릭 엑세스 차단" 웹사이트 정적 호스팅 등 외부 공개가 필요할 때만 선별적으로 해제합니다.
     

  7. 버킷 버전 관리를 설정합니다.
    Tip: 특별한 복구 요구사항이 없다면 비활성화(Disabled/Suspended) 상태로 유지하는 것을 권장합니다.

  8. 암호화 : "Amazon S3 관리형 키를 사용한 서버 측 암호화"를 체크 후 "버킷 만들기"를 클릭합니다.

    Tip: "버킷 키 활성화" 는 암호화 작업 시 발생하는 AWS 키 매니저 서비스 호출 횟수를 줄여주어, 비용 절감데이터 처리 성능 향상에 도움을 줍니다. 

S3 파일 업로드 

  1. AWS 콘솔에 접속합니다.

  2. “S3”를 검색하여 접속합니다.

  3. 파일을 업로드 하고 싶은 S3버킷에 접속합니다.

  4. 중앙에 “업로드” 버튼을 클릭합니다

  5. 로컬에서 업로드하고 싶은 파일을 찾아 Drag and Drop 합니다.

  6. “업로드” 버튼을 눌러 업로드 합니다.

업로드에 성공하셨습니다!

S3-EC2 간 데이터 업로드 및 다운로드

  1. 터미널/Powershell을 열어 EC2에 SSH접속을 합니다.

     

  2. aws s3 ls를 입력하여 s3<-> EC2연결 상태를 확인합니다.

    계정의 S3 버킷 리스트가 나오면 성공입니다! 
     

  3. S3에 올라간 파일 하나를 명령어로 다운로드 합니다.
    형식 : aws s3 cp s3://버킷명/파일명 로컬저장 경로명
    예시 : aws s3 cp s3://brad-test-test/s3_test.txt .

     

  4. S3 버킷 내 특정 폴더의 모든 내용을 동기화하여 다운로드합니다.

    형식 : aws s3 sync s3://버킷명/폴더명/ 로컬저장 경로명
    예시 : aws s3 sync s3://brad-test-test/my-data/ .

    Tip: sync는 변경된 파일만 골라서 다운로드하므로 효율적입니다!

     

  5. EC2에 있는 파일 하나를 S3 버킷으로 올립니다.
    형식 : aws s3 cp 파일명 s3://버킷명/
    예시 : aws s3 cp upload_to_s3 s3://brad-test-tset/

     

  6. 현재 위치(.)에 있는 모든 파일과 폴더를 S3 버킷으로 동기화하여 업로드합니다.
    형식 : aws s3 sync 로컬저장 경로명 s3://버킷명/폴더명/ 
    예시 : aws s3 sync . s3://brad-test-tset/ 

    주의: 끝에 .을 찍으면 "현재 위치의 모든 것"을 올리겠다는 뜻입니다.

    💡명령어 요약

작업 유형

명령어 예시

파일 업로드

aws s3 cp [로컬파일] s3://[버킷명]/[경로]/

파일 다운로드

aws s3 cp s3://[버킷명]/[경로]/[파일] [로컬경로]

디렉토리 동기화

aws s3 sync [로컬디렉토리] s3://[버킷명]/[경로]/

S3 목록 확인

aws s3 ls s3://[버킷명]/


또 다른 질문이 있으십니까? 문의 등록