버킷, 객체 및 리전
S3 버킷을 생성하고 객체를 업로드하며 키 이름 지정을 이해하고, S3가 리전 내에서 데이터를 복제하는 방식을 살펴봅니다.
버킷, 객체 및 리전은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
Amazon S3란 무엇인가요?
Amazon Simple Storage Service (S3)는 인터넷 어디에서나 원하는 양의 데이터를 저장하고 검색하도록 설계된 AWS의 객체 스토리지 서비스입니다. S3는 선택한 리전 내 여러 가용 영역의 여러 디바이스에 객체를 중복 저장하여 11 나인의 내구성(99.999999999%)을 제공합니다. 무한히 확장할 수 있고 용량 제한이 없으며, 0바이트부터 최대 5 TB까지의 객체를 지원합니다. S3는 정적 웹 사이트, 데이터 레이크, 백업 리포지토리 등을 제공하는 수많은 AWS 아키텍처의 기반입니다.
S3 버킷: 최상위 컨테이너
S3 버킷은 객체를 담는 전역적으로 고유한 이름의 컨테이너입니다. 버킷은 특정 AWS 리전에 생성되지만, 이름이 URL의 일부가 되므로 전 세계 모든 AWS 계정에서 전역적으로 고유해야 합니다. 버킷 이름은 3~63자여야 하며, 소문자로 이루어지고, 문자 또는 숫자로 시작해야 하며, 밑줄이나 대문자를 포함할 수 없습니다. 모범 사례로 다른 계정과 이름이 충돌하지 않도록 계정 ID 또는 임의의 접미사를 포함하십시오.
# Create an S3 bucket in a specific region
aws s3api create-bucket \
--bucket my-company-data-20240101 \
--region us-west-2 \
--create-bucket-configuration LocationConstraint=us-west-2S3 객체와 키
S3의 객체는 데이터(파일 콘텐츠), 키(버킷 내 객체의 고유 이름), 메타데이터(시스템 및 사용자가 정의한 키-값 쌍), 그리고 선택적으로 버전 ID(버전 관리가 활성화된 경우)로 구성됩니다. 키는 photos/2024/summer/beach.jpg와 같은 전체 경로 형식의 문자열입니다. S3는 플랫 구조이므로 실제 디렉터리는 없으며, 디렉터리처럼 보이는 키 접두사만 존재합니다. 최대 객체 크기는 5 TB이며, 100 MB보다 큰 객체에는 성능과 안정성을 높이기 위해 Multipart Upload를 사용하십시오.
# Upload an object
aws s3 cp ./report.pdf s3://my-company-data-20240101/reports/2024/report.pdf
# List objects with a specific prefix
aws s3 ls s3://my-company-data-20240101/reports/2024/S3 URL 형식
S3 객체는 두 가지 URL 형식을 통해 액세스할 수 있습니다. 경로 스타일: https://s3.<region>.amazonaws.com/<bucket>/<key>(새 버킷에서는 사용 중단 예정). 가상 호스팅 스타일: https://<bucket>.s3.<region>.amazonaws.com/<key>(현재 표준). 버킷 이름은 하위 도메인이 되므로 버킷 이름은 DNS 규칙을 준수해야 합니다. 사전 서명된 URL 및 CloudFront 배포에서는 항상 가상 호스팅 형식을 사용합니다. URL 구조를 이해하면 버킷 정책과 CORS를 올바르게 구성하는 데 도움이 됩니다.
# Generate a pre-signed URL valid for 1 hour (3600 seconds)
aws s3 presign s3://my-company-data-20240101/reports/2024/report.pdf \
--expires-in 3600S3 데이터 일관성 모델
2020년 12월부터 Amazon S3는 모든 리전에서 새 객체 PUT, 덮어쓰기, DELETE를 포함한 모든 작업에 대해 추가 비용 없이 자동으로 쓰기 후 강한 읽기 일관성을 제공합니다. 즉, 쓰기가 성공하는 즉시 이후의 모든 읽기는 객체의 최신 버전을 반환합니다. 이는 이전의 최종 일관성 모델을 크게 개선한 것으로, 쓰기 후 읽기 지연이나 재시도 로직이 필요 없어 애플리케이션 설계를 단순화합니다.
S3와 리전: 데이터 상주
S3 버킷을 생성할 때 리전을 지정하며, 복제를 명시적으로 구성하지 않는 한 데이터는 해당 리전에 유지됩니다. AWS는 내구성을 위해 해당 리전 내 여러 AZ에 데이터를 복제하지만, 데이터를 다른 리전으로 자동 이동하지는 않습니다. 이러한 리전별 데이터 상주는 규정 준수에 중요합니다. 규정에서 데이터가 EU에 머물러야 한다고 요구하는 경우 eu-west-1 또는 다른 EU 리전에 버킷을 생성하면 데이터가 외부로 나가지 않습니다.
# Find the region of an existing bucket
aws s3api get-bucket-location \
--bucket my-company-data-20240101대용량 객체를 위한 Multipart Upload
Multipart Upload는 5 GB를 초과하는 객체에는 필수이며, 100 MB를 초과하는 객체에는 권장됩니다. 객체를 여러 파트로 분할하고(파트당 최소 5 MB, 최대 10,000개 파트), 각 파트를 독립적으로 병렬 업로드한 후 최종 객체로 결합합니다. 어떤 파트에서 실패하더라도 해당 파트만 다시 시도하면 됩니다. AWS CLI 및 SDK는 대용량 파일에 aws s3 cp 명령을 사용할 때 멀티파트 업로드를 자동으로 처리하므로 직접 구현할 필요가 없습니다.
# The CLI uses multipart automatically for large files
aws s3 cp large-file-50GB.tar.gz s3://my-bucket/ \
--storage-class STANDARD
# Or use s3api to control multipart manually
aws s3api create-multipart-upload \
--bucket my-bucket \
--key large-file-50GB.tar.gzS3 객체 메타데이터
모든 S3 객체에는 AWS가 설정하는 시스템 메타데이터(Content-Type, Content-Length, ETag, Last-Modified)와 선택적인 사용자 정의 메타데이터(x-amz-meta- 접두사가 붙는 사용자 지정 키-값 쌍)가 있습니다. 메타데이터는 객체와 함께 저장되며, 객체를 다운로드할 때 HTTP 응답 헤더로 반환됩니다. Content-Type은 특히 웹 제공에서 중요합니다. Content-Type: text/html을 설정하지 않고 HTML 파일을 업로드하면 브라우저가 이를 렌더링하는 대신 다운로드하도록 제안할 수 있습니다.
# Upload with explicit Content-Type metadata
aws s3 cp index.html s3://my-website-bucket/ \
--content-type 'text/html' \
--metadata 'author=alice,env=production'정적 웹 사이트 호스팅을 위한 S3
Amazon S3는 버킷에서 HTML, CSS, JavaScript, 이미지 및 기타 파일을 직접 제공하는 정적 웹 사이트 호스트로 사용할 수 있습니다. 버킷 속성에서 정적 웹 사이트 호스팅을 활성화하고, 인덱스 문서(index.html)와 선택적 오류 문서(404.html)를 지정하십시오. 버킷의 웹 사이트 엔드포인트 URL은 다음 형식을 따릅니다. http://<bucket>.s3-website.<region>.amazonaws.com. HTTPS 및 사용자 지정 도메인을 지원하려면 S3 정적 웹 사이트 버킷 앞에 CloudFront 배포를 배치하십시오.
# Enable static website hosting
aws s3api put-bucket-website \
--bucket my-website-bucket \
--website-configuration '{"IndexDocument":{"Suffix":"index.html"},"ErrorDocument":{"Key":"404.html"}}'S3 Transfer Acceleration
S3 Transfer Acceleration은 가장 가까운 CloudFront 엣지 로케이션을 거쳐 AWS의 프라이빗 백본 네트워크를 통해 S3 버킷의 리전으로 데이터를 라우팅하여 장거리 객체 업로드 속도를 높입니다. 클라이언트는 S3 엔드포인트에 직접 업로드하는 대신 my-bucket.s3-accelerate.amazonaws.com과 같은 가속 엔드포인트에 업로드합니다. Transfer Acceleration에는 GB당 소액의 추가 요금이 부과되지만, 버킷 리전에서 지리적으로 멀리 떨어진 사용자의 업로드 속도를 크게 향상할 수 있습니다.
# Enable Transfer Acceleration on a bucket
aws s3api put-bucket-accelerate-configuration \
--bucket my-company-data-20240101 \
--accelerate-configuration Status=EnabledS3 객체 태그 지정
객체 태그는 S3 객체에 연결하여 객체를 분류하고 관리하는 키-값 쌍입니다. 태그는 다음 용도로 사용됩니다. 수명 주기 규칙(특정 태그가 있는 객체 전환 또는 만료), 액세스 제어(태그 값을 기준으로 한 IAM 및 버킷 정책 조건), 비용 할당(Cost Explorer가 태그별 S3 지출을 추적), 인벤토리 및 분석. 각 객체에는 최대 10개의 태그를 지정할 수 있습니다. 태그는 업로드 시 추가하거나, 객체 데이터 자체를 수정하지 않고 객체 생성 후 업데이트할 수 있습니다.
# Add tags to an existing object
aws s3api put-object-tagging \
--bucket my-company-data-20240101 \
--key reports/2024/report.pdf \
--tagging '{"TagSet":[{"Key":"env","Value":"production"},{"Key":"owner","Value":"finance"}]}'빠른 확인
이 레슨에서 다룬 AWS Solutions Architect (SAA-C03) 개념에 대한 이해도를 확인해 보십시오.
레슨 요약
이 레슨에서 배운 내용은 다음과 같습니다. S3 버킷은 특정 리전에 연결된 전역적으로 고유한 이름의 컨테이너입니다, 객체는 플랫 키 구조로 저장되며 메타데이터와 태그를 지원합니다, 그리고 S3는 다중 AZ 중복성을 통해 쓰기 후 강한 읽기 일관성과 11 나인의 내구성을 제공합니다. 다음으로 버킷 정책과 ACL을 사용한 S3 액세스 제어를 살펴보겠습니다.
자주 묻는 질문
“버킷, 객체 및 리전” 강의는 무료인가요?
네 — “버킷, 객체 및 리전” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“버킷, 객체 및 리전”에서 뭘 배우나요?
S3 버킷을 생성하고 객체를 업로드하며 키 이름 지정을 이해하고, S3가 리전 내에서 데이터를 복제하는 방식을 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“버킷, 객체 및 리전” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.