ACM을 이용한 HTTPS 설정
ACM 생성 (via 콘솔)
ACM은 AWS에서 무료로 제공해주는 SSL Certificate 인증서 솔루션입니다. 본인이 가지고 있는 도메인에 대해서는 Certificate를 자유롭게 생성하실 수 있습니다.
ACM도 테라폼으로 생성해도 되지만, 인증서의 경우에는 자동 Renewal 되기도 하고, 한 번 만들면 수정하는 경우가 거의 없기 때문에 콘솔에서 생성하셔도 무방합니다.
AWS Certificate Manager -> Request 클릭

Next 클릭

사용하고자 하는 도메인을 입력
만약 subdomain 모두 같은 인증서를 사용하고 싶다면, * 을 붙이시면 됩니다.
인증 방식은 DNS validation 을 사용합니다. 스스로 도메인을 가지고 있기 때문에, Route53에 자동으로 도메인 레코드가 등록되므로 인증이 훨씬 간편합니다.
상태가
Issued
가 될때까지 기다립니다.

ACM 적용
이제 만들어놓은 ACM을 적용해보겠습니다.
service.tf
파일에 아래와 같이 값을 넣습니다.
acm_external_ssl_certificate_arn
: 위에서 생성한 ACM의 ARN위 변수명은 원하시는대로 변경하셔도 됩니다. 단, 변경하신 이름을 반드시
_modules/hello/variables.tf
에 등록해주셔야 합니다.
# Route53 variables
acm_external_ssl_certificate_arn = "arn:aws:acm:ap-northeast-2:816736805842:certificate/9d4a371f-80c5-4087-9cb5-b2636f554da7"
해당 변수는 모듈에서 사용하기 때문에 모듈에 같은 이름의 variable을 정의해주셔야 합니다.
variable "acm_external_ssl_certificate_arn" {
description = "ssl cert id"
default = ""
}
이후에 해당 SSL을 등록하기 위해서 443번 포트로 요청을 받을 타켓 그룹을 생성하고, 해당 타켓 그룹에 위 ACM을 등록합니다.
#################### Listener for HTTPS service
resource "aws_lb_listener" "external_443" {
load_balancer_arn = aws_lb.external.arn
port = "443"
protocol = "HTTPS"
# If you want to use HTTPS, then you need to add certificate_arn here.
certificate_arn = var.acm_external_ssl_certificate_arn
default_action {
target_group_arn = aws_lb_target_group.external.arn
type = "forward"
}
}
Last updated
Was this helpful?