AWS 서버리스 사이트 구축
AWS 서버리스 사이트 구축
- 이번 장에서는 S3를 통해 서버가 없는 정적인 사이트를 구현해보도록 하겠습니다.
- 이와 같이 서버리스의 가장 큰 특징은 EC2처럼 상시 실행 상태 중이 아니여도, 사용자가 요청시에만 실행이 가능하기 때문에 비용면과 운영면에서 효율적이라 할 수 있습니다.
- AWS에서는 S3에서 웹 호스팅 기능을 제공하고 있어, 이를 통해 구현해보도록 하겠습니다.
AWS 서버리스 사이트 구축
- 먼저, AWS에 접속하여 S3 서비스를 검색 후, 클릭합니다.
- S3를 시작하기 위해 버킷을 생성합니다.
- 버킷의 이름을 지정하고, 리전을 선택합니다.
- 기본 값으로 설정을 진행합니다.
- 단, 그림과 같이 퍼블릭 엑세스의 대한 차단을 해제합니다.
- 버킷의 생성이 완료되었습니다.
- 다음으로는 생성된 버킷을 호스팅 등록하기 전에, 버킷의 정책을 먼저 생성하겠습니다.
- 버킷의 생성이 완료되면, 생성된 버킷을 클릭합니다.
- 생성된 버킷에서 권한 -> 버킷 정책을 클릭 후, 하단의 정책 생성기를 클릭합니다.
- 그림은 정책생성기로, 원하는 정책옵션을 선택하면 그 옵션을 Json파일로 변환시켜주는 역할을 수행합니다.
- 여기서는 아래의 값으로 설정을 진행합니다.
Select Type : S3 Bucket Policy
Principal : " * “ ( Principal는 리소스로의 접근을 허가 또는 거부할 사용자, 계정, 서비스, 엔티티를 나타냅니다.)
Actions : GetObject ( Actions는 허가할 조작을 나타냅니다.)
ARN : arn:aws:s3::: [ 버킷 이름 ]/[ Key_name ] ( 허용할 파일 혹은 디렉토리를 나타냅니다. 여기서 /Key_name은 /*을 사용합니다. )
- 생성 후, Add Statement를 클릭하면 현재 선택한 옵션들은 Json 형식으로 바꾸어 줍니다.
{
"Id": "Policy1593408879908",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1593408870453",
"Action": [
"s3:GetBucketObjectLockConfiguration"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::s3-serverless-web/*",
"Principal": "*"
}
]
}
- 다음은 미리 index.html과 error.html 파일을 업로드 하겠습니다.
- 위의 그림과 같이 파일을 업로드 합니다.
- 모든 설정은 기본 값으로 설정합니다.
- 이제, 호스팅을 위해 S3에서 정적 웹 사이트 호스팅을 설정하겠습니다.
- S3의 속성 -> 정적 웹 사이트 호스팅을 선택합니다.
- 정적 웹 사이트 호스팅 창이 나오면 인덱스 문서 및 오류 문서의 업로드한 파일을 기입 후 저장합니다.
- 이제 S3 EndPoint로 접속하면 index.html을 확인할 수 있습니다.
- 또한 에러 발생시에는 error.html이 보여지는 것을 확인할 수 있습니다.
- 이제 이것으로 기본적인 S3를 사용한 정적사이트 구축이 완료되었습니다.
- 이어서 서비스와 기능을 추가시켜보도록 하겠습니다.
AWS 서버리스 사이트 세부설정
Redirection Rules
- Redirection Rules란 특정 경로 또는 HTTP 오류 코드 등의 조건에 따라 라우팅을 지정해주는 기능입니다.
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>hello/</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyPrefixWith>bye/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
# KeyPrefixEquals로 진입한 트래픽을 ReplaceKeyPrefixWith로 진입시킵니다.
- Redirection Rules의 설정을 위해 다시 정적 웹 사이트 호스팅 설정을 클릭합니다.
- 후 위의 값을 리디렉션 규칙에 작성합니다.
- 위 설정을 마치면 Endpoint에 hello로 진입시 bye로 진입되는 것을 확인 할 수 있습니다.
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>index.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
# HttpErrorCodeReturnedEquals는 특정 에러가 발생하면 에러를 보여주는 대신 ReplaceKeyWith 값을 보여줍니다.
- 이와 동일하게 위의 값을 다시 리디렉션 규칙에 작성합니다.
- 설정을 마치면, Endpoint/의 모든 Null 값이 index.html로 옮겨지는 것을 확인할 수 있습니다.
- 차후 Lmabda, DNS, CDN 서비스를 추가하여 업데이트 하겠습니다.
DNS 설정
마지막 수정일자