[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명령어를 입력하여 현재 로컬 경로를 확인할 수 있습니다.
- PowerShell / 터미널 환경에서
알아두기
S3 와 EC2 사이의 파일 이동은 AWS CLI 로 합니다.
- 버킷: 파일을 담는 최상위 공간입니다. 이름은 전 세계에서 유일해야 합니다.
- 권한: EC2 에서 버킷을 읽고 쓰려면 S3 권한이 담긴 IAM 역할을 인스턴스에 붙여야 합니다.
- 명령: 파일 하나는
aws s3 cp, 폴더 전체 동기화는aws s3 sync를 씁니다.
Process
S3 버킷 생성
-
AWS 콘솔 접속에 접속합니다.

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

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

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

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

특별한 사유가 없다면 기본값인 **ACL 비활성화(권장)**를 유지합니다.
-
이 버킷의 퍼블릭 액세스 차단 설정을 합니다.

내부용 파일이라면 그대로 "모든 퍼블릭 엑세스 차단" 웹사이트 정적 호스팅 등 외부 공개가 필요할 때만 선별적으로 해제합니다.
-
버킷 버전 관리를 설정합니다.
Tip: 특별한 복구 요구사항이 없다면 비활성화(Disabled/Suspended) 상태로 유지하는 것을 권장합니다. -
암호화 : **"Amazon S3 관리형 키를 사용한 서버 측 암호화"**를 체크 후 **"버킷 만들기"**를 클릭합니다.
Tip: "버킷 키 활성화" 는 암호화 작업 시 발생하는 AWS 키 매니저 서비스 호출 횟수를 줄여주어, 비용 절감과 데이터 처리 성능 향상에 도움을 줍니다.
S3 파일 업로드
-
AWS 콘솔에 접속합니다.

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

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

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

-
로컬에서 업로드하고 싶은 파일을 찾아
Drag and Drop합니다.
-
“업로드” 버튼을 눌러 업로드 합니다.

업로드에 성공하셨습니다!
S3-EC2 간 데이터 업로드 및 다운로드
-
터미널/Powershell을 열어 EC2에 SSH접속을 합니다.
-
aws s3 ls를 입력하여 s3<-> EC2연결 상태를 확인합니다.
계정의 S3 버킷 리스트가 나오면 성공입니다!
-
S3에 올라간 파일 하나를 명령어로 다운로드 합니다. 형식 :
aws s3 cp s3://버킷명/파일명 로컬저장 경로명예시 :aws s3 cp s3://brad-test-test/s3_test.txt .
-
S3 버킷 내 특정 폴더의 모든 내용을 동기화하여 다운로드합니다.
형식 :
aws s3 sync s3://버킷명/폴더명/ 로컬저장 경로명예시 :aws s3 sync s3://brad-test-test/my-data/ .
Tip:
sync는 변경된 파일만 골라서 다운로드하므로 효율적입니다! -
EC2에 있는 파일 하나를 S3 버킷으로 올립니다. 형식 :
aws s3 cp 파일명 s3://버킷명/예시 :aws s3 cp upload_to_s3 s3://brad-test-tset/
-
현재 위치(
.)에 있는 모든 파일과 폴더를 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://[버킷명]/ |