Lambda에 HTTPS를 적용하기 위해선 API Gateway를 사용해서 Lambda로의 요청을 처리하게 해야 합니다. API Gateway는 HTTPS 트래픽을 처리할 수 있으며, ACM(인증서 관리 서비스)을 통해 발급받은 SSL 인증서를 적용할 수 있다.
주요 단계:
- ACM 인증서 발급: ACM에서 HTTPS용 인증서를 발급받습니다.
- API Gateway 설정: API Gateway를 통해 HTTPS 트래픽을 Lambda로 전달합니다.
- API Gateway에 ACM 인증서 적용: 발급받은 SSL 인증서를 API Gateway에 연결합니다.
Terraform을 사용한 IaC 예시
# Step 1: ACM 인증서 발급
resource "aws_acm_certificate" "lambda_cert" {
domain_name = var.domain_name # 예: "api.mydomain.com"
subject_alternative_names = var.subject_alternative_names # 대체 도메인 이름
validation_method = "DNS" # DNS 검증 방식
tags = {
Name = "acm-${var.env}-lambda-ssl"
}
}
# Step 2: ACM 인증서 검증을 위한 Route 53 레코드 생성
resource "aws_route53_record" "cert_validation" {
for_each = {
for dvo in aws_acm_certificate.lambda_cert.domain_validation_options :
dvo.domain_name => {
name = dvo.resource_record_name
type = dvo.resource_record_type
value = dvo.resource_record_value
}
}
zone_id = aws_route53_zone.main_zone.zone_id # Route 53 Zone ID
name = each.value.name
type = each.value.type
records = [each.value.value]
ttl = 60
}
# Step 3: API Gateway 설정
resource "aws_api_gateway_rest_api" "lambda_api" {
name = "Lambda API Gateway"
description = "API Gateway for Lambda HTTPS"
}
# Step 4: Lambda를 위한 API Gateway 리소스 생성
resource "aws_api_gateway_resource" "lambda_resource" {
rest_api_id = aws_api_gateway_rest_api.lambda_api.id
parent_id = aws_api_gateway_rest_api.lambda_api.root_resource_id
path_part = "{proxy+}"
}
# Step 5: API Gateway에서 Lambda로의 통합
resource "aws_api_gateway_method" "lambda_method" {
rest_api_id = aws_api_gateway_rest_api.lambda_api.id
resource_id = aws_api_gateway_resource.lambda_resource.id
http_method = "ANY"
authorization = "NONE"
}
resource "aws_api_gateway_integration" "lambda_integration" {
rest_api_id = aws_api_gateway_rest_api.lambda_api.id
resource_id = aws_api_gateway_resource.lambda_resource.id
http_method = aws_api_gateway_method.lambda_method.http_method
integration_http_method = "POST"
type = "AWS_PROXY"
uri = aws_lambda_function.my_lambda.invoke_arn
}
# Step 6: API Gateway에 ACM 인증서 적용 (HTTPS 지원)
resource "aws_api_gateway_domain_name" "lambda_domain" {
domain_name = var.domain_name # "api.mydomain.com"
certificate_arn = aws_acm_certificate.lambda_cert.arn
}
# Step 7: Route 53에서 API Gateway 도메인 연결
resource "aws_route53_record" "lambda_api_dns" {
zone_id = aws_route53_zone.main_zone.zone_id
name = var.domain_name
type = "A"
alias {
name = aws_api_gateway_domain_name.lambda_domain.cloudfront_domain_name
zone_id = aws_api_gateway_domain_name.lambda_domain.cloudfront_zone_id
evaluate_target_health = false
}
}
이 코드는 다음을 수행한다.
- ACM을 통해 도메인 인증서를 발급받고, 이를 API Gateway에 적용
- API Gateway가 Lambda와 통합되어 HTTPS 요청을 처리할 수 있도록 설정
- Route 53을 통해 도메인과 API Gateway를 연결
이렇게 하면 Lambda가 HTTPS 트래픽을 처리할 수 있게 된다.
'AWS' 카테고리의 다른 글
AWS terraform data 사용법 (0) | 2024.10.25 |
---|---|
AWS 외부에서 EC2로 HTTPS 연결 설정 IaC (0) | 2024.10.24 |
AWS Route53 records, alias_records, subject_alternative_names 설명 (0) | 2024.10.24 |
AWS VPC, 2개 AZ, Subnet, Internet G/W, Application LB, Route53, DirectConnect, Transit G/W 연결 IaC 테스트 방법 (0) | 2024.10.23 |
AWS KMS(Key Management Service) IaC 사용법과 예시 (0) | 2024.10.23 |