포트폴리오 자료를 S3에 저장하기

AWSBeginner
지금 연습하기

소개

비공개 버킷에 이미지와 작품 목록을 저장하고 내려받은 바이트를 비교한 뒤 정리합니다.

앞선 포트폴리오 실습을 먼저 완료하세요. 새 환경에는 앞 단계의 기능과 별도 리소스가 준비되어 있습니다. 이전 서버, 파일이나 자격 증명을 보관할 필요가 없습니다.

자격 시험과 연결

자격 시험 과제 실습 내용
AWS Certified Cloud Practitioner (CLF-C02) Task 3.6 EC2의 연산과 별도로 S3 객체 저장소를 사용합니다.

실습 개요

비공개 버킷에 이미지와 작품 목록을 저장하고 내려받은 바이트를 비교한 뒤 정리합니다.

비공개 저장소 만들기

이 단계에서는 작품 자료를 위한 비공개 S3 버킷을 만들고 공개 접근 보호를 적용합니다.

EC2는 웹사이트를 실행합니다. Amazon S3는 파일을 객체로, 이름이 있는 저장 공간인 버킷에 보관합니다. 자료를 서버와 분리하여 관리할 수 있습니다. 이번 실습은 새 사이트와 로컬 파일을 제공하며 버킷은 직접 만듭니다.

준비된 프로젝트 폴더로 이동하세요.

cd /home/labex/project

이번 실습의 식별자를 읽고 버킷 이름을 표시하세요.

source website.env
echo "$PORTFOLIO_BUCKET"

PORTFOLIO_BUCKET은 제공된 고유 이름이며 아직 버킷은 없습니다. S3는 고유한 이름이 필요하므로 portfolio 같은 흔한 이름 대신 제공된 값을 사용하세요.

CLI의 s3 명령은 파일 작업에 편리합니다. mb는 버킷 생성, s3://는 S3 위치를 뜻합니다.

aws s3 mb "s3://$PORTFOLIO_BUCKET"

make_bucket 확인이 표시됩니다. 연결이 us-east-1을 사용하므로 새 버킷도 이 Region에 있습니다. AWS View에서 이름을 찾으세요.

새 저장소는 기본적으로 비공개입니다. Block Public Access는 실수로 공개 권한을 주는 것을 막는 보호입니다. 제공된 JSON의 네 설정이 모두 true인지 확인하세요.

cat private-access.json

각 true는 보호를 켭니다. s3api는 접근 설정 같은 개별 S3 작업을 제공합니다. launch.json처럼 file://로 로컬 설정을 읽으므로 값을 하나씩 입력하지 않아도 됩니다.

aws s3api put-public-access-block \
  --bucket "$PORTFOLIO_BUCKET" \
  --public-access-block-configuration file://private-access.json

업데이트에 성공하면 출력 없이 프롬프트로 돌아옵니다. S3에서 설정을 읽어 저장되었는지 확인하세요.

aws s3api get-public-access-block --bucket "$PORTFOLIO_BUCKET"

네 값이 true이고 AWS View에 No objects가 보이는지 확인하세요. reference 버킷의 keep.txt는 관련 없는 자료이므로 그대로 둡니다. 이제 작품 자료를 저장할 준비가 되었습니다.

자료 업로드하고 내려받기

이 단계에서는 세 작품 이미지와 목록을 저장한 뒤 AURA를 내려받아 원본 바이트와 비교합니다.

portfolio-assets/에는 네 파일이 있습니다. WebP는 이미지 형식이고 projects.json에는 작품 제목, 설명과 이미지 참조가 있습니다. 사이트와 자료가 제공되므로 저장 작업에 집중할 수 있습니다.

파일 웹사이트 용도
images/aura-brand.webp AURA
images/forma-chair.webp FORMA
images/echo-record.webp ECHO
projects.json 작품 제목, 설명과 이미지 참조

키는 버킷 안의 객체 이름입니다. images/aura-brand.webp의 images/는 접두사이며 실제 S3 폴더는 아닙니다. cp는 파일 복사, --recursive는 폴더 전체를 상대 경로의 키로 복사합니다.

aws s3 cp portfolio-assets/ "s3://$PORTFOLIO_BUCKET/" --recursive

네 줄의 upload를 확인하세요. 이어서 s3 ls로 저장된 객체를 표시합니다. --recursive는 images/ 아래의 키도 포함합니다.

aws s3 ls "s3://$PORTFOLIO_BUCKET/" --recursive

네 줄에는 변경 시각, 크기와 키가 표시됩니다. 세 이미지와 projects.json을 확인하면 되며 순서나 정확한 시각은 중요하지 않습니다. AWS View에도 같은 이름이 표시됩니다.

버킷에는 세 이미지와 projects.json이 있습니다. 식별자는 다릅니다.

복사 방향을 바꾸어 AURA를 다른 로컬 이름으로 내려받으세요.

aws s3 cp "s3://$PORTFOLIO_BUCKET/images/aura-brand.webp" downloaded-aura.webp

cmp는 파일 바이트를 비교합니다. 원본과 내려받은 파일을 비교하세요.

cmp portfolio-assets/images/aura-brand.webp downloaded-aura.webp

출력 없이 프롬프트가 돌아오면 파일이 같습니다. 실제 이미지를 저장하고 그대로 내려받았습니다. 다르다면 키를 확인하고 제공된 원본을 다시 업로드하세요.

비공개 저장이 완료되었습니다. 사이트는 아직 로컬 파일을 읽으므로 S3에 업로드해도 페이지는 바뀌지 않습니다. 다음 실습은 같은 자료가 저장된 새 환경에서 시작하여 애플리케이션의 읽기 권한을 다룹니다.

요약

비공개 S3를 만들고 공개 보호를 적용하여 세 이미지와 목록을 저장하고 같은 사본을 내려받았습니다. 저장된 객체와 이를 사용하는 웹사이트 애플리케이션을 구분했습니다.

공식 문서: S3 objects, AWS CLI S3 file commands, Block Public Access.