2017-07-11 4 views
1

Ich habe 2 Zertifikate für die gleiche Domain in zwei Regionen ausgestellt, ap-northost-1 und us-east-1, da meine Hauptserver in ap-northost-1 sind und CloudFront ein Zertifikat in us-east-1 benötigt.Wie kann ein ACM-Zertifikat in einer bestimmten Region für eine Datenquelle angegeben werden?

Ich möchte einen in us-east-1 als Terraform-Datenquelle auswählen, aber diese haben denselben Domain-Namen.

I definiert Zertifikat Ressource wie

# ACM Certificate on us-east-1 (Global) 
data "aws_acm_certificate" "cert_global" { 
    domain = "my.example.com" 
    statuses = ["ISSUED"] 
} 

und I bezeichnet, um es wie

resource "aws_cloudfront_distribution" "static" { 
    (snip) 
    viewer_certificate { 
    acm_certificate_arn = "${data.aws_acm_certificate.cert_global.arn}" 
    minimum_protocol_version = "TLSv1" 
    ssl_support_method = "sni-only" 
    } 
} 

verursacht

1 error(s) occurred: 

* aws_cloudfront_distribution.static: 1 error(s) occurred: 

* aws_cloudfront_distribution.static: InvalidViewerCertificate: The specified SSL certificate doesn't exist, isn't in us-east-1 region, isn't valid, or doesn't include a valid certificate chain. 
    status code: 400, request id: ceece17f-6610-11e7-977d-114d7e67d7c1 

I verstanden Terraform beiden Zertifikate mit demselben Domain-Namen erkennt in zwei Regionen, aber nicht wissen, wie man einen angibt.

Das Dokument sagt nichts über die Region für eine bestimmte Ressource https://www.terraform.io/docs/providers/aws/d/acm_certificate.html

Wie ich eine in us-east-1 verwenden kann?

Antwort

2

Ich habe die Antwort selbst gefunden. data hat provider Attribut.

provider "aws" { 
    alias = "virginia" 
    region = "us-east-1" 
} 

data "aws_acm_certificate" "cert_global" { 
    domain = "my.example.com" 
    statuses = ["ISSUED"] 
    provider = "aws.virginia" 
} 

findet das Zertifikat in us-east-1.

+0

wirkt sich der Provider-Abschnitt dann nicht auf Ihre anderen ap-nordost-1-Ressourcen aus? – RaGe

+0

[Dokumentation sagt] (https://www.terraform.io/docs/configuration/providers.html): Wenn kein Provider angegeben wird, wird die Standard-Provider-Konfiguration verwendet (die Provider-Konfiguration ohne Alias-Set). Danke dafür! – RaGe

Verwandte Themen