Amazon S3 실습 단계
- Amazon Simple Storage Service(Amazon S3) 버킷 생성
- S3 버킷 정책 수정
- S3 버킷에 객체 업로드
- S3 버킷을 사용하도록 인스턴스 수정
- S3 버킷에서 객체 삭제
* 인프라 : 실습을 지원하기 위해 웹 애플리케이션에 필요한 일부 리소스가 프로비저닝 되어 있습니다.
리소스에는 그림과 같이 가용 영역에 퍼블릭 서브넷이 있는 VPC와 서브넷에 대한 라우팅 테이블이 포함되어 있습니다.
현재 웹 애플리케이션은 "퍼블릭 서브넷 1" 에서 실행됩니다.
1. S3 버킷 생성
먼저 EC2 인스턴스를 만들고 실행해서 S3 버킷과 연동해 줄 수 있는 웹 페이지 스크립트를 설치해 줍니다.
#!/bin/bash -ex
# Update yum
yum -y update
# Add node's source repo
curl -sL https://rpm.nodesource.com/setup_15.x | bash -
#Install nodejs
yum -y install nodejs
# Create a dedicated directory for the application
mkdir -p /var/app
# Get the app from S3
wget https://aws-tc-largeobjects.s3-us-west-2.amazonaws.com/ILT-TF-100-TECESS-5/app/app.zip
# Unzip it into a specific folder
unzip app.zip -d /var/app/
cd /var/app/
# Install dependencies
npm install
# Start your app
npm start
EC2 인스턴스 만들 때 User data 항목에 이 스크립트를 넣어주시기 바랍니다.
웹 페이지 스크립트가 정상적으로 설치되고 서버가 실행되면 해당 인스턴스의 아이피로 들어가 봅니다.
경고 메시지로 S3: Employee Images bucket not found. 표시가 나오는데 이를 해결해 주기 위해서 S3 버킷을 생성하고 이미지를 업로드해야 합니다.
(또한 이미지를 표시할 수 있도록 웹 애플리케이션의 IAM 역할이 S3 버킷에 액세스 할 수 있도록 정책을 구성합니다.)
이번 과제에서는 S3 버킷을 생성합니다.
Amazon S3의 모든 객체는 S3 버킷에 저장됩니다.
버킷을 생성할 때 특정 리전에서 버킷을 생성해야 합니다.
S3로 들어가 줍시다.
"버킷 만들기" 선택
employee-photo-bucket-<INITIALS>-<NUMBER>
여기서 버킷 이름을 지정할 때 INITIALS 부분은 본인 이름의 영문 이니셜, NUMBER 부분은 임의의 숫자로 바꿉니다.
예를 들어 employee-photo-bucket-jamong-1014
버킷 이름 지정하고 "Create bucket" 으로 S3 버킷 생성 (나머지 옵션 변경 스킵)
2. 버킷 정책 생성
방금 생성한 버킷 선택
권한 - 버킷 정책 - 변경 순으로 진행
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3ReadAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::000000000000:role/EmployeeDirectoryAppRole"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::employee-photo-bucket-jamong-1014",
"arn:aws:s3:::employee-photo-bucket-jamong-1014/*"
]
}
]
}
000000...로 되어 있는 부분은 AWS Technical Essentials 교육 에서 제공해 준 AWS Account 값을 넣은 것입니다.
빨간 박스로 표시되어 있는 부분을 자신이 생성했던 버킷 이름으로 변경
(정확한 값을 넣지 않으면 Save 되지 않음)
이제 S3 버킷에 버킷 정책을 적용했습니다.
버킷 정책은 EmployeeDirectoryAppRole IAM 역할을 사용하여 애플리케이션에서 S3 버킷으로의 읽기 액세스를 허용합니다. 이 정책을 사용하면 애플리케이션에서 버킷의 모든 객체에 액세스 할 수 있습니다.
3. S3 버킷을 사용하도록 애플리케이션 수정
EC2로 만든 애플리케이션으로 돌아갑니다.
Administration - Configuration
S3 Access Enabled 값이 x로 되어있는 걸로 보아 S3 버킷이 현재 애플리케이션과 연결되어 있지 않음을 나타냅니다.
S3 Bucket 필드에서 Change를 선택하고 아까 생성했던 S3 버킷 employee-photo-bucket-<INITIALS>-<NUMBER>
을 기입해 주고 Save를 선택해 줍니다.
S3 Access Enabled 필드가 활성화된 모습
정상적으로 S3 버킷과 애플리케이션이 연결된 상태입니다.
4. S3 버킷에 객체 업로드
다시 돌아가서 생성된 버킷을 선택하여 객체를 업로드해줍시다.
저는 AWS Technical Essentials 에서 제공해 주는 Sample-photoes.zip을 이용하였습니다.
그럼 S3 버킷과 연결된 애플리케이션에도 나오는 것을 확인할 수 있습니다.
5. S3 객체 삭제
- 삭제 또한 생성한 S3 버킷 링크로 들어가서 업로드했던 파일 중 삭제하고 싶은 파일이 있다면 선택하고 "Delete"을 선택
- Permanently delete objects? 섹션에서 permanently delete를 입력하여 삭제를 확인합니다.
- Delete objects를 선택
- 애플리케이션이 있는 브라우저 탭으로 돌아가서 삭제된 이미지가 더 이상 표시 되지 않는 걸 확인할 수 있습니다.
출처 : AWS Technical Essentials 교육 기반
'서버 > AWS' 카테고리의 다른 글
[AWS]12. S3 기반 정적 웹 사이트 호스팅 (Route53, Cloudfront) (0) | 2024.01.20 |
---|---|
[AWS]11. Amazon DynamoDB 실습 (0) | 2023.02.26 |
[AWS]9. Identity and Access Management(IAM) 실습 (0) | 2023.02.19 |
[AWS]8. EC2 Auto Scaling 실습(ELB에 적용) (2) (0) | 2022.06.12 |
[AWS]7. Auto Scaling 개념 (1) (0) | 2022.06.08 |
댓글