이 영역을 누르면 첫 페이지로 이동
Nearer, Still Nearer 블로그의 첫 페이지로 이동

Nearer, Still Nearer

페이지 맨 위로 올라가기

Nearer, Still Nearer

Nearer, still nearer, close to Thy heart ...

저가 웹 페이지 운용 - 인증 (개정판)

  • 2022.08.01 14:34
  • IT

2013년 말에 AWS (Amazon Web Service, 아마존 웹 서비스)의 S3 (Simple Storage Service)를 이용해 초저가의 개인 웹 페이지를 운용하는 방법을 소개했습니다.  웹 호스팅 (web hosting) 회사를 이용하면 최소 매월 $10 이상의 비용이 드는 반면, AWS를 사용하면 도메인 이름 (domain) 등록 비용 외에는 거의 비용이 들지 않습니다. (S3 storage: $0.023/GB*month, Route 53 연결: $0.50/month, Domain registration: $8/year)

 

운용하는 것이 완전 공개 웹 페이지면 무척 간단하나, 웹 접속시 암호로 인증을 요구해야하는 경우 2013년 당시에는 AWS 자체 기능으로 쉽게 할 수 있는 방법이 없어 S3Auth 라는 open source project을 이용하여 우회적으로 해결을 해야 했습니다.  그간 별 문제 없이 잘 사용해왔는데 1주일 전부터 우회 경로로 사용했던 relay.s3auth.com 에 문제가 생겼는지 작동을 하지 않아, 이 참에 AWS의 새로운 자체 기능을 이용하여 인증과정을 다시 집어넣었습니다.

 

S3Auth와는 달리, 등록된 개인의 domain이 필요하지 않고, 여러 개의 username & password를 사용할 수 있어 편리합니다.  기본 작동원리를 잠시 살펴보겠습니다.  실제 내용물(contents)은 접근금지로 설정된 S3 (Simple Storage Service) 클라우드에 저장이 되어 있습니다.  클라우드에 저장된 내용물 객체(object)를 조회하면 실제로 내용물이 전송되기 위해서는 네트워크 상에서 여러 복잡한 단계를 거치게 되는데, 그런 과정을 최소화하여 최단 시간에 내용물을 전송해주는 클라우드 프론트 (CloudFront)라는 서비스가 있습니다.   여기에 간단한 스크립트(script)를 실행해주는 람다 (Lambda)에 접속해 인증(authentication)을 하는 접속자에게만 S3의 실제 내용물을 제공하는 것이지요.

 

 

1. 접근 금지된 (blocked) S3 Bucket 만들기

 

AWS S3로 가서 "Create bucket"을 누릅니다.

 

 

① Bucket 이름을 입력합니다.  개인 도메인 (domain) 이름을 사용할 경우 도메인 이름과 같게 하면 관리가 편합니다.

② 지역(region)은 본인 거주 지역이 좋겠습니다.

 

 

인증(authentication)을 거친 접속만을 허용해야 하니, 반드시 "Block all public access"를 선택해 주세요 (default임).  기존에 존재하던 bucket의 경우에는 추가로 Permissions ⇨ Bucket policy에서 "Delete"를 눌러 기존 policy를 삭제 합니다.

 

 

사용할 내용물(contents)을 업로드(upload)합니다.  S3 관련해서 좀 더 자세한 내용은 이전 글을 참고해 주세요 ("저가 웹페이지 운용 - S3")

 

 

2. 클라우드 프론트 (CloudFront) 지역 확인

 

제가 뭔가를 잘못한 것인지 모르겠으나, 클라우드 프론트(CloudFront)에서는 서버 지역 (server region)을 고를 수 없고 "us-east-1"으로 고정이 되어, 수동으로 다른 지역을 입력해도 계속 "us-east-1"으로 돌아왔습니다.  다음 과정에서 람다(Lambda)와 인증서(SSL Certificate)가 반드시 클라우드 프론트(CloudFront)와 같은 서버 지역 (server region)에 있어야 하니, 인터넷 URL (Uniform Resource Locator) 주소의 앞 부분을 반드시 기억하시기 바랍니다.  아마도 클라우드 프론트(CloudFront) 의 주기능이 최단 시간에 내용물(contents)을 전송하는 것이기 때문에 람다(Lambda)를 같은 서버 지역의 것으로 제한하는듯 합니다.

 

 

 

3. 람다 기능 (Lambda Function) 프로그래밍

 

람다(Lambda)에서 제일 먼저 클라우드 프론트 (CloudFront)와 같은 지역으로 이동해야 합니다.  

 

 

그리고 "Create function" 을 눌러 작업을 시작합니다.

 

 

① 기능(function)의 이름을 입력합니다.

② Java, Go, PowerShell, Node.js (JavaScript), C#, Python, Ruby등이 다 가능한데, default인 Node.js를 사용하였습니다.  여기서 사용할 기능인 Lambda@Edge가 최신 버전의 Node.js는 지원하지 않을 수 있으니 검색을 통해 확인을 하시기 바랍니다.  2022년 7월 현재 Lambda@Edge는 Node.js 최신 버전인 16.x (default임)를 지원하고 있습니다.

③ 맨 아래의 "Create function"을 눌러 기능(function) 생성을 마칩니다.

 

 

생성된 기능(function)을 선택하고 ① "Configuration" ⇨ ② "Permissions" ⇨ ③ 파란색 Role 이름을 누릅니다.

 

 

① "Trust relationships" ⇨ ② "Edit trust policy" 를 누르면 IAM (Identity and Access Management)의 policy로 이동합니다.

 

 

① Trust policy 내용에서 "Service" 에 edgelambda.amazonaws.com을 추가해야 합니다.

"lambda.amazonaws.com" 를

["lambda.amazonaws.com", "edgelambda.amazonaws.com"] 로 변경합니다.

② "Update policy"를 눌러 작업을 마칩니다.

 

 

① 람다의 기능(Lambda ⇨ Functions)에서 "Code"를 누릅니다.

② "index.js" code 창에 원하는 기능을 프로그램 합니다.

      [인증 없는 1차 기초 테스트용 code]

      [인증 있는 최종 code]

③ "Deploy" 를 누릅니다.

④ "Actions" ⇨ "Publish new version"을 눌러 작업을 마칩니다.

 

 

"Function ARN" 주소를 복사해 둡니다.  주소의 맨 끝에 있는 숫자가 버전 (version) 이고 변경된 code를 publish할때마다 버전 숫자만 1씩 증가합니다.

 

 

 

4. 클라우드 프론트 (CloudFront)의 Distribution 생성 및 연결

 

클라우드 프론트(CloudFront)로 돌아가서 "Create distribution"을 누릅니다.  (이미 생성된 distribution을 수정하려면 리스트에서 파란색 ID를 선택)

 

 

(이미 생성된 distribution에서는 Origins ⇨ 항목 선택 ⇨ Edit ⇨ Settings)

① "Origin domain"에서 앞에 생성한 접근 금지된 (blocked) S3 Bucket 을 선택합니다. 

② "S3 bucket access" 에서 "Yes use OAI"를 선택합니다.

③ "Create new OAI"를 눌러 새로운 Origin access identity를 생성합니다.  이미 생성된 OAI는 CloudFront 좌측의 메뉴에서 Security ⇨ Origin access identities에서 열람/수정/삭제할 수 있습니다.

④ CloudFront에 S3 bucket를 처음 등록할 때는 "Yes, update the bucket policy"를 선택합니다.  그러면 CloudFront가 distribution 생성을 하는 과정에서, Origin으로 사용되는 S3 bucket의 Permissions ⇨ Bucket policy에 ③항 OAI의 ID를 추가 합니다.

 

 

"Viewer" ⇨ "Redirect HTTP to HTTPS"를 선택합니다.

(이미 생성된 distribution에서는 Behaviors ⇨ 항목 선택 ⇨ Edit ⇨ Settings ⇨ Viewer)

 

 

(이미 생성된 distribution에서는 Behaviors ⇨ 항목 선택 ⇨ Edit ⇨ Function associations)

① "Viewer request"의 "Function type"에서 "Lambda@Edge"를 선택합니다.

② "3. 람다 기능 (Lambda Function)"의 제일 마지막에서 복사해 둔 Function ARN 주소를 붙여 넣습니다.

 

 

아래 부분은 개인 도메인 (domain)을 사용할 경우에만 필요한 내용입니다.  다음 글에 개인 도메인에 연결하는 방법을 소개하면서 다시 설명을 하도록 하겠습니다.  (이미 생성된 distribution에서는 General ⇨ Settings ⇨ Edit)

개인 도메인을 사용하더라도, 일단은 xxx.cloudfront.net 의 주소를 이용해서 인증(authentication)이 정상적으로 작동하는지 한번 확인 하기를 권합니다.

 

 

(이미 생성된 distribution에서는 General ⇨ Settings ⇨ Edit)

① 도메인(domain) 이름만 (예: test.goojs.us 혹은 xxx.cloudfront.net) 입력되었을 경우 default로 출력할 내용물(content)이 있다면 입력합니다. 

② "Create distribution"을 눌러 작업을 마칩니다. 

 

CloudFront의 Distribution은 전 세계 서버들(worldwide servers)에 정보가 배포되어야하기 때문에 최소 몇분의 시간이 지나야 변경된 내용들이 웹에서 반영되기 시작합니다.

 

 

아래 "Distribution domain name"에 있는 URL (Uniform Resource Locator) 주소를 복사해 웹 브라우저 (web browser)에서 인증(authenticaion)을 거쳐 내용물(contents)를 볼 수 있으면 성공입니다.

 

 

[관련 글]

  • 저가 웹 페이지 운용 - S3
  • 저가 웹 페이지 운용 - 내 도메인
  • 저가 웹 페이지 운용 - 클라우드 프론트와 내 도메인의 연결
저작자표시비영리동일조건
  • 카카오스토리
  • 트위터
  • 페이스북

'IT' 카테고리의 다른 글

저가 웹 페이지 운용 - 클라우드 프론트와 내 도메인의 연결  (2) 2022.08.03
저가 웹 페이지 운용 - 인증 (개정판)  (2) 2022.08.01
Bitmoji를 이용해 만든 내 Emoji  (20) 2022.03.27
WiFi 공유기에서 고정 IP를 사용하자  (2) 2021.11.01
Apple iOS: Private MAC Address  (8) 2021.09.25
WiFi 무선 공유기 추가  (4) 2021.09.24
안드로이드 전화기 속도 높이는 방법  (4) 2020.12.12
재외국민용 : 한국 핸드폰 + 070 전화  (12) 2020.09.20
Xfinity Mobile: 아이폰 핫스팟 문제 해결  (6) 2020.07.29
Adobe Genuine Software Integrity Service 제거  (54) 2019.10.07
Macbook Pro 수리후 재활용  (0) 2018.07.29
Amazon Web Service, Amazon Web Services, Authentication, CloudFront, lambda, Lambda@Edge, 보안, 인증, 홈페이지제작

댓글

  1. 'Greek to me'이긴 하나 뭔가 조목조목 차근차근 설명되고 있는 걸 보고 있자니 오오,
    심히 아름다워요. +_+ 미학적으로 탁월합니다.

    그런데, 더가까이 님 전공은 이런 쪽과 상관없지 않아요?
    (1) 연세도 많으신 분이 (켁, 죄송합니다;; IT쪽에서 보자면요;; )
    (2) 자기 전공 분야도 아닌 분야를 어떻게 이렇게 잘 알 수 있죠?
    (3) 다 떠나서, 도대체 설명은 왜 이렇게 잘하시는 거죠?
    정말 여러모로 놀라운 분이에요.

    저도 새로 시작한 프로젝트(?)를 홍보하려면 웹사이트 만들어 운영해야 하는데 지금으로선 기초 지식이 하나도 없어 못 알아듣습니다만 공부 좀 하고 나면 유용한 정보가 될 수 있겠어요. 미리 감사 드려요.

    (잔뜩 사 둔 도메인과 자료 저장 공간 유지비, 구독형 프로그램들 때문에 허덕이는 단단. 실물 부동산 재산세에, 웹상 재산세까지, 박봉인데 너무 버거워요;; 재산세 내느라 휴가 못 갑니다. ㅠㅠ)

    단 단
    2022.08.02 17:01 신고
    • 댓글에 댓글 작성하기
    • 댓글 편집 또는 삭제
    • 댓글 신고…
    • ㅎㅎ IT쪽 따분한 글을 미학적으로 이해하시다니 +.+

      예 저는 반도체 전공입니다. IT관련 글은 사실 제 개인용 노트에요. 늘 하는 일이 아니라서 터득했을 때 자세히 안 적어두면 몇달만 지나도 다 까먹거든요 ㅠㅠ 자료야 웹에 넘치지만 제가 원하는 정보 다시 찾으려면 한참 걸리니까요.

      도메인 투자도 하시는구나 헐~~ 재산세 걱정하시는 것 보니 은근 지대 갑후? ㅎㅎㅎ 그래도 휴가는 가을 학기 전에 좀 시원해지면 꼬옥 다녀오셔요~~~

      2022.08.02 21:30 신고
      더가까이
      • 댓글 신고…
      • 댓글 편집 또는 삭제
방문자 정보

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 저가 웹 페이지 운용 - 클라우드 프론트와 내 도메인의 연결

    저가 웹 페이지 운용 - 클라우드 프론트와 내 도메인의 연결

    2022.08.03
  • Bitmoji를 이용해 만든 내 Emoji

    Bitmoji를 이용해 만든 내 Emoji

    2022.03.27
  • WiFi 공유기에서 고정 IP를 사용하자

    WiFi 공유기에서 고정 IP를 사용하자

    2021.11.01
  • Apple iOS: Private MAC Address

    Apple iOS: Private MAC Address

    2021.09.25
다른 글 더 둘러보기
  • 최신
    • 1
    • ···
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • ···
    • 995
  • 다음

정보

Nearer, Still Nearer 블로그의 첫 페이지로 이동

Nearer, Still Nearer

  • Nearer, Still Nearer의 첫 페이지로 이동

검색

메뉴

  • HOME
  • 모든 글 보기
  • TAG
  • Admin

카테고리

  • 전체보기 (995)
    • 묵상 (67)
    • 선교 & 선교단체 (18)
    • CCM & 성가 (37)
    • 내 생각에는... (70)
    • 이런 것은 나누고 싶어... (74)
    • 사진&동영상 (97)
    • 여행스케치 (188)
      • 미국 San Francisco (8)
      • 미국 California (48)
      • 미국 Utah & Arizona (20)
      • Iceland & Faroe 2022 (33)
      • Europe 2015 (36)
      • 홋카이도 겨울 2018 (11)
      • 홋카이도 겨울 2017 (10)
      • 홋카이도 여름 2016 (3)
      • 홋카이도 가을 2015 (4)
      • 홋카이도 이른봄 2015 (9)
      • 일본 칸토(関東) (2)
      • 한국 (4)
    • 이것저것 (109)
    • 미국생활 (43)
    • 서재(書齋) (24)
    • 발자취... (10)
    • 빛 바랜 앨범 (14)
    • 음악 (52)
    • 밴드 음향 (7)
    • 영화&드라마 (37)
    • 음식 (40)
    • 맛집 (22)
    • IT (20)
    • 쇼핑 가이드 (7)
    • ㅋㅋㅋ (37)
    • 1면기사에 대한 斷想 (20)

공지사항

  • 공지 - Nearer, Still Nearer

최근 글

  • 갈 수 없는 나라 (?)

    갈 수 없는 나라 (?)

    2022.08.14
  • 넷플릭스 먹방 "필이 좋은 여행, 한입만!"

    넷플릭스 먹방 "필이 좋은 여행, 한입만!"

    2022.08.12
  • 에고 에고 또 물폭탄이...

    에고 에고 또 물폭탄이...

    2022.08.09
  • 미슐랭 식당 "Protégé" in Palo Alto

    미슐랭 식당 "Protégé" in Palo Alto

    2022.08.08

인기 글

  • 양의 섬, 페로 제도 가는 길

    양의 섬, 페로 제도 가는 길

    2022.05.23
  • 페로 제도: 1일차 Trælanípan & Trøl⋯

    페로 제도: 1일차 Trælanípan & Trøl⋯

    2022.05.25
  • 페로 제도: 2일차-1 Kallur Lighthouse

    페로 제도: 2일차-1 Kallur Lighthouse

    2022.05.27
  • 아이슬란드: 1일차-1 스나이펠스요쿨 (S⋯

    아이슬란드: 1일차-1 스나이펠스요쿨 (S⋯

    2022.06.12

아카이브

  • 2022/08
  • 2022/07
  • 2022/06
  • 2022/05
  • 2022/04

태그

  • 묵상
  • California
  • 샌프란시스코
  • 홋카이도
  • 사진
  • 기독교
  • 캘리포니아
  • iceland
  • 홋카이도 여행
  • 미국

정보

더가까이의 Nearer, Still Nearer

Nearer, Still Nearer

더가까이

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자 664,691
  • 오늘 202
  • 어제 415

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Flag Counter
Powered by Tistory / Kakao. © 더가까이. Designed by Fraccino.

티스토리툴바