0

我正在创建一个Route53 URL,指向CloudFront分配并击中API网关端点。我得到了Terraform定义的工作和正确部署的一切。但是,我需要为CloudFront分配添加标签。是否可以更改Terraform API网关域名资源上的标签信息?

下面是相关Terraform代码:

resource "aws_api_gateway_domain_name" "api-gateway-domain" { 
    domain_name = "${var.domain_name}" 
    certificate_arn = "${var.arn} 
    count  = "${var.count}" 
} 


resource "aws_route53_record" "route53" { 
    zone_id = "${data.aws_route53_zone.route53-zone.zone_id}" 
    name = "${var.domain_name}" 
    type = "A" 
    alias { 
     name     = "${aws_api_gateway_domain_name.api-gateway-domain.cloudfront_domain_name}" 
     zone_id    = "${aws_api_gateway_domain_name.api-gateway-domain.cloudfront_zone_id}" 
     evaluate_target_health = true 
    } 
    count = "${var.count}" 
} 

我想知道如果我可以这样做"${aws_api_gateway_domain_name.api-gateway-domain.cloudfront_domain_name.id.tags}" = { TAGS = "foobar" }或诸如此类的话。

这可能吗?或者是否必须手动设置CloudFront分配以将我的Route53 URL指向?

+0

这是不是很清楚你想在这里实现什么。您的API网关前是否有Cloudfront发行版? API Gateway由Cloudfront支持,但创建API Gateway不会在您的AWS账户中创建Cloudfront分配资源。 – ydaetskcoR

+0

根据aws_api_gateway_domain_name资源上的Terraform文档“内部API网关创建CloudFront分配以在给定主机名上路由请求。” (https://www.terraform.io/docs/providers/aws/r/api_gateway_domain_name.html) 在AWS文档上,“对于您创建的每个API,API Gateway都会为该API设置Amazon CloudFront分配。” (http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html) Terraform使我可以通过api_gateway_domain_name访问CloudFront分配'domain_name'和'zone_id' '。 –

回答

1

不,你不能。

API网关为您创建的CloudFront分配是完全不可见;你无法看到它,没有办法改变它。真的,他们甚至告诉你,它是什么,然后给你一些信息,如“目标域名”,是令人难以置信的混淆。这与他们说“实例存储支持的AMI由S3存储”相同 - 但您无权访问实际的S3对象。

此外,不,您不需要创建您自己的CloudFront分配;但是,您应该能够将Route53记录指向显示在API网关的“自定义域名”部分中的CloudFront目标域名。

route53_recordapi_gateway_domain_name都不支持标签块;可能是由于AWS不支持标签(我知道这很疯狂,考虑到AWS总是说你应该标记所有内容,但是不提供这个选项)。

所以你只是有点SOL能够标记这些资源;这不会是你最后一次遇到这个不幸的事情。

相关问题