서버 접속 없이 HTTPS 적용하기
(Lambda + API Gateway)

안녕하세요! 오늘은 클라우드 엔지니어링을 하다 보면 마주칠 수 있는 아주 난감한 상황을 해결하는 방법을 공유하려 합니다.

‍

혹시 이런 요구사항을 받아보신 적 있나요?

‍

"고객사 보안 정책상 서버(EC2)에 직접 SSL 인증서를 설치할 수 없고, ALB나 CloudFront 같은 앞단 장비도 쓸 수 없는 상황입니다.
하지만 서비스 도메인에는 무조건 HTTPS가 적용되어야 해요."

‍

정말 난감하죠. 하지만 AWS의 API Gateway와 Lambda를 조합하면, 마치 프록시(Proxy) 서버처럼 구성하여 이 문제를 해결할 수 있습니다.

‍

핵심 흐름: 사용자 (HTTPS) → API Gateway (SSL 처리) → Lambda (중계) → EC2 (HTTP 통신)

‍

1. 사전 준비: Lambda Layer 만들기

우리가 만들 Lambda 함수는 HTTP 요청을 보내기 위해 파이썬의 requests 라이브러리를 사용합니다. 하지만 AWS Lambda 기본 환경에는 이 라이브러리가 없기 때문에, **Layer(계층)**를 먼저 만들어야 합니다.

‍

로컬 PC에서 압축 파일 생성

폴더를 하나 만들고 이름은 반드시 **python**으로 합니다. (이 이름이 아니면 인식이 안 됩니다!)

해당 폴더 안에 requests 라이브러리를 설치합니다.

결과적으로 압축 파일 내부 구조는 python/requests/... 형태가 되어야 합니다.

‍

mkdir python

pip install requests -t python

zip -r my-requests-layer.zip python

‍

AWS 콘솔에서 Layer 등록

[AWS Lambda 콘솔] > 좌측 메뉴 [계층(Layers)] > [계층 생성] 클릭.

이름: my-requests-layer (원하는 대로)

업로드: 방금 만든 .zip 파일을 올립니다.

호환 아키텍처: x86_64 (또는 환경에 맞게)

호환 런타임: Python 3.x 선택 후 생성 완료.

‍

2. Lambda 함수 생성 (중계 역할)

이제 실제 트래픽을 EC2로 토스해 줄 함수를 만듭니다.

‍

함수 생성

[AWS Lambda 콘솔] > [함수 생성] 클릭.

‍

함수 이름: proxy-function

런타임: Python 3.x

생성 버튼 클릭.

Layer 추가

생성된 함수 화면 하단부의 [계층(Layers)] 섹션 > [계층 추가(Add a layer)] 클릭.

'사용자 지정 계층' 선택 > 아까 만든 my-requests-layer 선택 후 추가.

‍

코드 작성

아래 코드를 붙여넣습니다. 이 코드는 API Gateway로 들어온 요청(Method, Path, Header, Body)을 그대로 받아서, 목적지 EC2로 쏘아주고 응답을 다시 반환하는 역할을 합니다 .

‍

import json

import requests

def lambda_handler(event, context):

# 1. API Gateway에서 전달받은 요청 정보 파싱

path = event.get("path", "/")

method = event.get("httpMethod", "GET")

query_params = event.get("queryStringParameters", {})

headers = event.get("headers", {})

body = event.get("body", None)

# 2. 목적지 EC2 정보 (여기에 실제 서버 IP를 적으세요)

target_host = "54.180.XX.XX" # 실제 EC2 공인 IP

target_port = 80

# 3. 요청 URL 조립

target_url = f"http://{target_host}:{target_port}{path}"

try: # 4. EC2로 실제 요청 전송 (requests 라이브러리 사용) resp = requests.request( method=method, url=target_url, headers=headers, params=query_params, data=body, timeout=30 ) # 5. EC2의 응답을 그대로 반환 return { "statusCode": resp.status_code, "headers": dict(resp.headers), "body": resp.text } except Exception as e: return { "statusCode": 500, "body": json.dumps({"error": str(e)}) }

‍

Deploy 버튼을 눌러 배포합니다.

‍

3. API Gateway 구성 (HTTPS 진입점)

이제 외부에서 들어올 대문인 API Gateway를 만듭니다.

‍

API 생성

[API Gateway 콘솔] > [API 생성] 클릭.

‍

API 유형: HTTP API 선택 (REST API보다 저렴하고 설정이 간편합니다).

통합(Integrations): 'Lambda'를 선택하고, 위에서 만든 proxy-function을 지정합니다.

API 이름: ssl-proxy-api 등 입력 후 [다음].

‍

경로(Route) 구성

‍

메서드: ANY (모든 HTTP 메서드 허용)

리소스 경로: / (모든 경로 허용)

통합 대상: 방금 연결한 Lambda 함수 확인.

이렇게 설정하면 https://도메인/* 으로 들어오는 모든 요청이 Lambda로 넘어갑니다.

스테이지 구성

자동 배포(Auto-deploy)가 켜진 상태로 기본값($default) 그대로 두고 [생성] 완료.

‍

4. 도메인 연결 및 SSL 인증서 적용

여기가 가장 중요한 HTTPS 적용 단계입니다. 미리 AWS ACM(Certificate Manager)에 사용할 도메인의 인증서가 발급되어 있어야 합니다.

‍

사용자 지정 도메인 이름 생성

[API Gateway 콘솔] 좌측 메뉴 > [사용자 지정 도메인 이름(Custom domain names)] 클릭.

[생성] 클릭.

도메인 이름: 서비스할 도메인 입력 (예: api.demo-mc1.com).

TLS 버전: 1.2 권장.

ACM 인증서: 미리 발급받은 해당 도메인의 인증서를 선택합니다

[도메인 이름 생성] 클릭.

‍

API 매핑 (API Mapping)

‍

방금 만든 도메인을 클릭하고 [API 매핑] 탭으로 이동합니다.

[매핑 구성(Configure API mappings)] > [새 매핑 추가] 클릭.

API: 아까 만든 ssl-proxy-api를 선택합니다.

단계(Stage): $default 선택.

저장합니다.

‍

5. DNS 연결 (Route 53)

마지막으로 도메인 접속 시 API Gateway로 연결되도록 설정합니다.

‍

Route 53 콘솔 이동 > 해당 도메인의 호스팅 영역 선택.

레코드 생성 클릭.

레코드 이름: 위에서 설정한 서브 도메인(예: api).

레코드 유형: A 레코드.

별칭(Alias): 활성화.

트래픽 라우팅 대상: API Gateway API로 별칭 선택.

리전: 서울(ap-northeast-2) 등 해당 리전 선택.

엔드포인트: 목록에서 아까 만든 API Gateway 도메인이 뜰 겁니다. 선택.

[레코드 생성] 완료.

마무리 및 테스트

이제 브라우저 주소창에 https://내도메인을 입력해 보세요.

**브라우저(Client)**는 API Gateway와 HTTPS로 안전하게 통신합니다.

API Gateway는 Lambda를 호출합니다.

Lambda는 내부적으로 **EC2(HTTP 80)**와 통신하여 데이터를 가져옵니다.

이 구성을 사용하면 서버 설정은 1도 건드리지 않고, AWS 관리형 서비스만으로 빠르고 안전하게 HTTPS 환경을 구축할 수 있습니다. ALB 비용이 부담스럽거나 서버 접근이 제한된 환경에서 꼭 한번 활용해 보세요!

  • 사전 준비: Lambda Layer 만들기

  • Lambda 함수 생성 (중계 역할)

  • API Gateway 구성 (HTTPS 진입점)

  • 도메인 연결 및 SSL 인증서 적용

  • DNS 연결 (Route 53)

관련 키워드
클라우드
클라우드보안
관련 키워드
클라우드
클라우드보안
관련 콘텐츠
eBook
클라우드
Quest
eBook
eBook
클라우드
운영 최적화
No items found.
eBook
Tech Guide
클라우드
운영 최적화
AWS
Tech Guide