99c73cada0
- Remove aws_ses_configuration_set, aws_ses_domain_identity, aws_ses_domain_dkim - Remove SES verification and DKIM Route53 records - Remove SES outputs - Add MX, SPF, DKIM, DMARC records for cibello.app -> mail.aamos.systems - DKIM key split into two 255-char strings per Route53 limit No apply; plan saved as cibello.plan
191 lines
5.0 KiB
Terraform
191 lines
5.0 KiB
Terraform
resource "aws_route53_zone" "main" {
|
|
name = "cibello.app"
|
|
tags = {
|
|
Name = "cibello-app-zone"
|
|
}
|
|
}
|
|
|
|
resource "aws_acm_certificate" "main" {
|
|
provider = aws.us_east_1
|
|
domain_name = "cibello.app"
|
|
subject_alternative_names = ["www.cibello.app"]
|
|
validation_method = "DNS"
|
|
|
|
lifecycle {
|
|
create_before_destroy = true
|
|
}
|
|
|
|
tags = {
|
|
Name = "cibello-prod-cert"
|
|
}
|
|
}
|
|
|
|
resource "aws_route53_record" "cert_validation" {
|
|
for_each = {
|
|
for dvo in aws_acm_certificate.main.domain_validation_options : dvo.domain_name => {
|
|
name = dvo.resource_record_name
|
|
record = dvo.resource_record_value
|
|
type = dvo.resource_record_type
|
|
}
|
|
}
|
|
|
|
zone_id = aws_route53_zone.main.zone_id
|
|
name = each.value.name
|
|
type = each.value.type
|
|
ttl = 300
|
|
records = [each.value.record]
|
|
}
|
|
|
|
resource "aws_cloudfront_origin_access_control" "web" {
|
|
name = "cibello-prod-oac"
|
|
description = "OAC for cibello-web"
|
|
origin_access_control_origin_type = "s3"
|
|
signing_behavior = "always"
|
|
signing_protocol = "sigv4"
|
|
}
|
|
|
|
resource "aws_s3_bucket_policy" "web" {
|
|
bucket = aws_s3_bucket.web.id
|
|
policy = jsonencode({
|
|
Version = "2012-10-17"
|
|
Statement = [
|
|
{
|
|
Sid = "AllowCloudFrontOAC"
|
|
Effect = "Allow"
|
|
Principal = {
|
|
Service = "cloudfront.amazonaws.com"
|
|
}
|
|
Action = "s3:GetObject"
|
|
Resource = "${aws_s3_bucket.web.arn}/*"
|
|
Condition = {
|
|
StringEquals = {
|
|
"AWS:SourceArn" = aws_cloudfront_distribution.main.arn
|
|
}
|
|
}
|
|
}
|
|
]
|
|
})
|
|
}
|
|
|
|
resource "aws_cloudfront_distribution" "main" {
|
|
enabled = true
|
|
is_ipv6_enabled = true
|
|
default_root_object = "index.html"
|
|
aliases = ["cibello.app", "www.cibello.app"]
|
|
|
|
origin {
|
|
domain_name = aws_s3_bucket.web.bucket_regional_domain_name
|
|
origin_id = "cibello-web"
|
|
origin_access_control_id = aws_cloudfront_origin_access_control.web.id
|
|
}
|
|
|
|
default_cache_behavior {
|
|
allowed_methods = ["GET", "HEAD", "OPTIONS"]
|
|
cached_methods = ["GET", "HEAD"]
|
|
target_origin_id = "cibello-web"
|
|
viewer_protocol_policy = "redirect-to-https"
|
|
forwarded_values {
|
|
query_string = false
|
|
cookies {
|
|
forward = "none"
|
|
}
|
|
}
|
|
min_ttl = 0
|
|
default_ttl = 3600
|
|
max_ttl = 86400
|
|
}
|
|
|
|
price_class = "PriceClass_100"
|
|
|
|
restrictions {
|
|
geo_restriction {
|
|
restriction_type = "none"
|
|
}
|
|
}
|
|
|
|
viewer_certificate {
|
|
acm_certificate_arn = aws_acm_certificate.main.arn
|
|
ssl_support_method = "sni-only"
|
|
minimum_protocol_version = "TLSv1.2_2021"
|
|
}
|
|
|
|
tags = {
|
|
Name = "cibello-prod-cdn"
|
|
}
|
|
}
|
|
|
|
resource "aws_route53_record" "apex" {
|
|
zone_id = aws_route53_zone.main.zone_id
|
|
name = "cibello.app"
|
|
type = "A"
|
|
|
|
alias {
|
|
name = aws_cloudfront_distribution.main.domain_name
|
|
zone_id = aws_cloudfront_distribution.main.hosted_zone_id
|
|
evaluate_target_health = false
|
|
}
|
|
}
|
|
|
|
resource "aws_route53_record" "www" {
|
|
zone_id = aws_route53_zone.main.zone_id
|
|
name = "www.cibello.app"
|
|
type = "A"
|
|
|
|
alias {
|
|
name = aws_cloudfront_distribution.main.domain_name
|
|
zone_id = aws_cloudfront_distribution.main.hosted_zone_id
|
|
evaluate_target_health = false
|
|
}
|
|
}
|
|
|
|
resource "aws_route53_record" "api" {
|
|
zone_id = aws_route53_zone.main.zone_id
|
|
name = "api.cibello.app"
|
|
type = "A"
|
|
ttl = 300
|
|
records = [aws_eip.app.public_ip]
|
|
}
|
|
|
|
resource "aws_route53_record" "admin" {
|
|
zone_id = aws_route53_zone.main.zone_id
|
|
name = "admin.cibello.app"
|
|
type = "A"
|
|
ttl = 300
|
|
records = [aws_eip.app.public_ip]
|
|
}
|
|
|
|
resource "aws_route53_record" "mx" {
|
|
zone_id = aws_route53_zone.main.zone_id
|
|
name = "cibello.app"
|
|
type = "MX"
|
|
ttl = 300
|
|
records = ["10 mail.aamos.systems"]
|
|
}
|
|
|
|
resource "aws_route53_record" "spf" {
|
|
zone_id = aws_route53_zone.main.zone_id
|
|
name = "cibello.app"
|
|
type = "TXT"
|
|
ttl = 300
|
|
records = ["v=spf1 mx a:mail.aamos.systems ~all"]
|
|
}
|
|
|
|
resource "aws_route53_record" "dkim" {
|
|
zone_id = aws_route53_zone.main.zone_id
|
|
name = "mail._domainkey.cibello.app"
|
|
type = "TXT"
|
|
ttl = 300
|
|
records = [
|
|
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApUGQRa54rZOOaUWHTnCVXZfXkcXGHxZaYhI2AklP5j5y3jrA/4kiNaxzlxOFthJ2ujomnTZdPs4/V/uQ/xlAQxf7T9X5Vg9Kf7NQtmFii//4q3K2OgGg070aHLeKuDF6YjRjEADBVQBtGVwf9btjvEfhtLsPiWgp2KuxKYGRSWNuXjAZiwf3ON1ehRWm",
|
|
"wlxSfe8yil93LYi0u+BOAzYhQsI6v8bpmCkR/+GCdbWNZQsbbDDSvUt6z2xBmlzKZQ6TpE6yCbMs6ddsSVLq4OXuL5rVk9+ETbZqsbmy/IB//18Ta/7Hi4QL4WqZbD97To2UlD1TtUwpLDHx/cR+bEgNCQIDAQAB"
|
|
]
|
|
}
|
|
|
|
resource "aws_route53_record" "dmarc" {
|
|
zone_id = aws_route53_zone.main.zone_id
|
|
name = "_dmarc.cibello.app"
|
|
type = "TXT"
|
|
ttl = 300
|
|
records = ["v=DMARC1; p=none; rua=mailto:dmarc@cibello.app"]
|
|
}
|