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

AWSBeginner
지금 연습하기

소개

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

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

자격 시험과 연결

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

실습 개요

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

비공개 저장소 만들기

이 단계에서는 EC2는 코드를 실행하고 S3는 버킷 안에 객체로 파일을 저장합니다. 서버의 한 사본에만 의존하지 않습니다.

프로젝트로 이동합니다.

cd /home/labex/project

PORTFOLIO_BUCKET은 준비된 고유 이름이며 아직 버킷은 없습니다. 이름은 AWS 파티션 안에서 전역적으로 고유해야 합니다.

source website.env
echo "$PORTFOLIO_BUCKET"

s3 mb로 버킷을 만듭니다. s3://는 S3 위치이며 준비된 지역은 us-east-1입니다.

aws s3 mb "s3://$PORTFOLIO_BUCKET"

private-access.json의 네 true는 Block Public Access를 활성화합니다.

cat private-access.json

s3api로 설정을 적용합니다.

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

읽어 네 항목의 true를 확인합니다.

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

AWS View에 빈 버킷이 표시됩니다. 새 버킷은 기본 비공개이며 이 설정은 공개 ACL과 정책에 추가 보호를 제공합니다. reference 버킷과 keep.txt는 유지합니다.

자료 업로드하고 내려받기

이 단계에서는 준비된 네 파일 images/aura-brand.webp, images/forma-chair.webp, images/echo-record.webp, projects.json을 저장합니다. WebP는 이미지 형식입니다. JSON은 프로젝트 패널의 텍스트와 이미지 참조입니다. 코드, 폰트와 빌드된 Tailwind CSS는 제공됩니다.

cp와 --recursive로 portfolio-assets/ 안의 모든 파일을 복사합니다. 상대 경로는 Key가 되고 images/는 이름 접두사이며 실제 S3 폴더가 아닙니다. upload 네 줄을 확인합니다.

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

Contents와 AWS View에서 정확히 네 Key를 확인합니다.

aws s3api list-objects-v2 --bucket "$PORTFOLIO_BUCKET"

전송 방향을 바꾸어 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

비공개 저장이 완료됐습니다. 사이트는 아직 로컬 자료를 씁니다. 다음 실습에서 세 이미지와 JSON의 S3 읽기를 허용하고 버킷은 비공개로 유지합니다.

실제 실습의 확인 예시입니다. 리소스 ID는 환경마다 다릅니다.

만든 리소스만 정리하기

이 단계에서는 객체, 빈 버킷과 서버를 정리합니다.

rm과 --recursive로 확인한 자신의 버킷에 있는 네 객체를 삭제합니다. 참조 버킷을 선택하지 마세요.

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

rb로 빈 자신의 버킷을 삭제합니다.

aws s3 rb "s3://$PORTFOLIO_BUCKET"

서버 ID를 표시합니다.

echo "$INSTANCE_ID"

이 인스턴스만 종료합니다.

aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"

terminated를 기다립니다.

aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"

만든 버킷은 없어지고 keep.txt와 네트워크는 남습니다. 다음 실습은 독립 환경입니다.

요약

비공개 객체를 저장하고 동일한 내용을 내려받아 확인한 뒤 만든 리소스만 삭제했습니다.

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