【发布时间】:2021-03-22 03:23:30
【问题描述】:
我正在尝试通过区域自定义域公开我的区域 API 网关的所有阶段。
问题
如果我直接卷曲我的 API 网关(即https://xx.execute-api.eu-west-3.amazonaws.com/default/users),它可以工作,但如果我卷曲域名(即https://api.acme.com/default/users),我会得到一个403。
配置
我的 Terraform 文件如下所示:
data "aws_route53_zone" "acme" {
name = "acme.com."
}
resource "aws_api_gateway_rest_api" "backend" {
name = "acme-backend-api"
description = "Backend API"
body = "SOMETHING"
endpoint_configuration {
types = ["REGIONAL"]
}
}
resource "aws_api_gateway_deployment" "backend" {
rest_api_id = aws_api_gateway_rest_api.backend.id
stage_name = "default"
lifecycle {
create_before_destroy = true
}
}
resource "aws_api_gateway_domain_name" "backend" {
domain_name = "api.acme.com"
regional_certificate_arn = "arn:aws:acm:xx:certificate/xx"
endpoint_configuration {
types = ["REGIONAL"]
}
}
resource "aws_route53_record" "backend" {
name = aws_api_gateway_domain_name.backend.domain_name
type = "A"
zone_id = data.aws_route53_zone.acme.id
alias {
evaluate_target_health = true
name = aws_api_gateway_domain_name.backend.regional_domain_name
zone_id = aws_api_gateway_domain_name.backend.regional_zone_id
}
}
resource "aws_api_gateway_base_path_mapping" "backend" {
api_id = aws_api_gateway_rest_api.backend.id
domain_name = aws_api_gateway_domain_name.backend.domain_name
# No stage_name: expose all stages
}
根据 Terraform api_gateway_domain_name 和 api_gateway_base_path_mapping 的例子,应该没问题。
我也跟着很多howtos,我有这些元素:
- 证书
- API 自定义域的 A 记录
- 到已部署阶段的映射(如果您直接调用它就可以)
我错过了什么/做错了什么?
【问题讨论】:
-
您观察到哪些错误或非预期行为?
标签: amazon-web-services terraform aws-api-gateway amazon-route53