학부 클라우드 컴퓨팅 수업에서 AWS Academy로 실습한 내용을 정리하였습니다.
지난 포스팅에서 S3 버킷을 생성하고, 정적 웹 호스팅 설정하는 부분을 다루었다.
이번 포스팅에서는 S3를 사용한 정적 웹 호스팅에 정책을 설정하고, 재해 복구(DR) 전략을 구현하는 내용을 다루려고 한다.
그 전에 먼저, AWS Well-Architected Framework에 대해 잠깐 알아보자.
AWS Well-Architected Framework는 AWS가 제시하는 모범적인 클라우드 아키텍처 설계 방식이다. 쉽게 말해서, 이러한 원칙을 준수하며 아키텍처를 설계하면 좋다는 것.
- 운영 우수성(Operational)
- 보안(Security)
- 신뢰성(Reliability)
- 성능 효율성(Performance)
- 비용 최적화(Cost)
- 지속 가능성(Sustainability)
자세한 내용은 추후에 별도의 포스팅에서 다루도록 하고 오늘은 이러한 Well-Architected Framework에 맞춰 S3를 설정해보자.
1. 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책 만들기
S3 버킷에 업로드되는 각 객체가 자동으로 퍼블릭으로 설정되는 버킷 정책을 생성할 수 있다.
S3 > 버킷 > 생성한 버킷 의 권한 탭에 들어가 버킷 정책을 편집한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::Bucket-Name/*"
]
}
]
}
다음 정책을 붙여넣고, Bucket-Name 부분을 현재 버킷 이름으로 변경한다. 나 같은 경우는 static-website-0926로 변경하였음.
성공적으로 버킷 정책이 반영되었다.
2. S3 버킷에서 버전 관리 활성화 (데이터 보호)
정적 웹 사이트를 자주 업데이트 하는 상황에서 유용하게 사용될 수 있다.
S3 버킷에 대한 버전 관리를 활성화하면 같은 이름의 파일이 업데이트되어 새롭게 업로드 될 때마다 버전을 기록한다.
먼저, S3 버킷의 버전 관리를 활성화한다. S3 > 버킷 > 생성한 버킷 의 속성 탭에 들어가 버킷 버전 관리를 편집한다.
활성화를 체크하고 변경 사항 저장. 단, 버전 관리를 활성화한 후에는 비활성화할 수 없다.
이제 기존의 존재하는 index.html 파일을 조금 수정하고 다시 업로드하자.
업로드 한 다음에 버전 표시 토글을 클릭해주면, 다음과 같이 버전 기록이 표시된다.
이제 S3 정적 웹 사이트를 열어보면, 새롭게 업데이트 된 index.html이 반영되어 있음을 확인할 수 있다.
3. 수명 주기 정책 설정 (비용 최적화 및 데이터 액세스 관리)
버전 관리를 활성화하면 새 객체 및 버전 업로드시 S3 버킷의 크기가 계속 커진다는 것을 알게 되었다. 이전 버전에 추가로 새로운 버전이 계속 쌓이게 되니까 비용을 절약하기 위해 이전 버전 중 일부를 폐기하도록 정책을 설정해보자.
소스 버킷에 있는 객체의 이전 버전을 S3 Standard-IA로 자동으로 옮기도록 수명 주기 정책을 설정하자.
예시 정책은 총 2가지다.
- 소스 버킷내 모든 객체의 이전 버전이 30일 후에 S3 Standard-IA로 이동하도록 한다.
- 365일 후에 객체의 이전 버전이 삭제되도록 한다.
이를 위해 수명 주기 규칙을 사용한다. S3 > 버킷 > 생성한 버킷 의 관리 탭을 클릭해 수명 주기 규칙을 생성하자.
1번째 규칙부터 먼저 생성해보자.
이전 버전 모두를 30일 이후 Standard-IA로 이동시키게 설정한 다음 규칙 생성.
다음으로, 2번째 규칙을 생성해보자.
이전 버전이 365일이 지나면 삭제가 되도록 설정한 다음 규칙 생성. 이제 해당 버킷은 2가지 수명 주기 규칙을 가지면서 버전 관리를 하게 된다.
4. 교차 리전 복제 활성화 (자동 재해 복구)
이제, 정적 웹 페이지를 업데이트하다가 정적 파일이 실수로 덮어 써지거나 삭제되지 않도록 보호하는 조치를 알아보자. 교차 리전 복제는 중요한 데이터를 여러 리전에 거쳐 백업하고 아카이빙 할 수 있는 기능이다.
소스 버킷과 다른 리전에 두 번째 버킷을 생성하고 해당 버킷의 버전 관리를 활성화한다. 이 두 번째 버킷은 대상 버킷이 된다.
기존에 생성한 소스 버킷의 리전이 us-east-1 (버지니아 북부) 이므로, ap-northeast-2 (서울) 리전에 대상 버킷을 만들었다.
다음으로, 소스 S3 버킷에서 교차 리전 복제를 활성화한다. 여기서는 static-website-0926이 소스 버킷이다.
S3 > 버킷 > 소스 버킷 의 관리 탭에서 복제 규칙을 생성한다.
기존 IAM 역할에서 선택해준다. IAM 역할이 없다면 새 역할 생성 후 선택한 다음 저장.
기존 객체를 복제하시겠습니까? 라는 질문에 아니요 하고 제출하면 성공적으로 복제 규칙이 생성된다.
이렇게 복제 규칙이 생성되면, 기존에 버킷에 있는 객체에는 적용되지 않고 신규로 업로드 된 객체에 복제 규칙이 적용된다.
이제 적용된 복제 규칙을 확인하기 위해 새로운 버전의 index.html을 업로드해보자.
업로드는 소스 버킷에 하면 된다. 그러면 자동으로 대상 버킷에도 백업됨.
이렇게 다시 한 번 업데이트를 한 index.html을 소스 버킷에 업로드 하고 대상 버킷으로 가면,
성공적으로 index.html이 복제되어 생성된 것을 확인할 수 있다!
'개발 > Cloud' 카테고리의 다른 글
[Cloud] AWS S3로 정적 웹 사이트 호스팅하기 (1) | 2024.09.26 |
---|---|
[Cloud] GCP Cloud Functions로 비디오 썸네일 추출하기 (0) | 2024.05.30 |
[Cloud] 구름 IDE를 처음 사용한다면 (2) | 2022.10.23 |