아직 Amazon S3에서 도메인 리디렉션을 하고 있습니까?

2971 단어 TerraformS3ALBAWS

소개



하위 도메인을 네이키드 도메인으로 리디렉션하는 방법을 찾고 있다면 AWS에서 제공하는 기사를 찾았습니다.

거기에는 한 도메인을 다른 도메인으로 리디렉션할 때 AWS 모범 사례가 Amazon S3에서 리디렉션하는 대신 ALB를 사용하여 리디렉션을 구성하게 되었습니다.
참조 : htps : // 아 ws. 아마존. 이 m / jp / p Remim m stp rt / k w w d d sen-r / e lb-re ct-to-a te-r-domain-u th-a lb /

지금까지 나는 Amazon S3 웹 사이트 호스팅에서 하위 도메인을 리디렉션했습니다 ( ㅋㅋㅋ 콧 x. jp → XXXX.jp로 리디렉션). 또한 S3 단체에서는 HTTPS를 지원하지 않기 때문에 CloudFront+S3로 리디렉션을 하고 있던 사람도 많지 않을까요?

하지만 ALB 리디렉션 기능을 사용하면 CloudFront 없이도 HTTPS 리디렉션도 가능합니다.

전제 조건



다음의 전제로 순서는 실시합니다.
  • 인증서는 ACM에서 발급하고 와일드 카드를 받았습니다
  • ALB는 이미 구축되었습니다
  • Terraform 버전은 v0.14 이상입니다

  • 이번 주제


    www.example.comexample.com로 리디렉션하려고합니다.

    Terraform 코드



    GUI의 순서로서는 AWS 문서 에 기재된 대로이므로,
    여기에서는 프로 시저를 Terraform 코드에 넣으려고합니다.
    참고로 ALB 리스너를 이렇게 편집하면 특정 URL을 리디렉션합니다.

    # このコードでは *.example.comとexample.comをACMで証明書取得していることにします
    # www.example.comとexample.comは同じALBに向けています。
    data "aws_route53_zone" "example_com" {
      name = "example.com"
    }
    
    resource "aws_route53_record" "a_example_com" {
      zone_id = data.aws_route53_zone.example_com.zone_id
      name    = "example.com."
      type    = "A"
    
      alias {
        name                   = aws_lb.example.dns_name
        zone_id                = aws_lb.example.zone_id
        evaluate_target_health = false
      }
    }
    
    resource "aws_route53_record" "a_www_example_com" {
      zone_id = data.aws_route53_zone.example_com.zone_id
      name    = "www.example.com."
      type    = "A"
    
      alias {
        name                   = aws_lb.example.dns_name
        zone_id                = aws_lb.example.zone_id
        evaluate_target_health = false
      }
    }
    
    # ALBの設定 
    resource "aws_lb" "example" {
      # ...
    }
    
    resource "aws_lb_listener" "example" {
      # Other parameters
    }
    
    ## ALBのリスナールールでリダイレクトを記載
    ## ここでwww.example.comをexample.comにリダイレクトする
    resource "aws_lb_listener_rule" "example" {
      listener_arn = aws_lb_listener.example.arn
      priority     = 1
    
      condition {
        host_header {
          values = ["www.example.com"]
        }
      }
    
      action {
        type = "redirect"
        redirect {
          host        = "example.com"
          protocol    = "HTTPS"
          status_code = "HTTP_301"
        }
      }
    }
    

    좋은 웹페이지 즐겨찾기