我正在使用 AWS CDK(使用 Python 作为部署语言),并且尝试将现有 cloudfront 发行版的别名记录添加到现有托管区域。虽然我可以开始cdk synth工作,cdk deploy但找不到托管区域。
我使用 AWS CDK 版本 1.5.0(内部版本 c020efa)和 1.6.0(内部版本 3a0cde0)进行了测试。
我尝试像这样找到该区域:
zone = route53.HostedZone.from_hosted_zone_attributes(
self,
'MyHostedZone',
zone_name = props.domainName,
hosted_zone_id = 'Z1XXXXXXXXXS1'
)
Run Code Online (Sandbox Code Playgroud)
就像这样:
zone = route53.HostedZone.from_lookup(
self,
'MyHostedZone',
domain_name = props.domainName
)
Run Code Online (Sandbox Code Playgroud)
并将其与以下命令一起使用(如果创建了新的托管区域,则该方法有效):
route53.ARecord(
self,
'SiteAliasRecord',
record_name = siteDomain,
target = route53.RecordTarget(alias_target=target),
zone = zone
)
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,错误消息都是:
StaticSiteHTTPS/SiteAliasRecord (StaticSiteHTTPSSiteAliasRecord9BXXXXX) 未找到 ID 为 Z2XXX6BQ9TEB5H 的托管区域(服务:AmazonRoute53;状态代码:404;错误代码:NoSuchHostedZone;请求 ID:
我不知道 IDZ2XXX6BQ9TEB5H来自哪里,它不在我的模板中,并且我没有具有此 ID 的托管区域。两者都会生成一个 .template.json,其中包含:
"StaticSiteHTTPSSiteAliasRecord9BXXXXX": {
"Type": "AWS::Route53::RecordSet",
"Properties": { …Run Code Online (Sandbox Code Playgroud) 我有一个启用了 CORS 和自定义域设置的 AWS API Gateway API。通过execute-api端点的直接 API 访问正在运行,我在浏览器中没有遇到 CORS 问题。通过api.example.com我也配置的自定义域进行访问,原则上是有效的,但不是在浏览器中,我在那里获得 CORS:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)
在设置自定义域时,API Gateway 会配置它自己的 CloudFront 分配,这在某种程度上是内部的,我不知道如何配置它,或者如果可能的话,它不会出现在我的 CloudFront 分配列表中,这是预期的。从 AWS文档:
API Gateway 创建的 CloudFront 分配由隶属于 API Gateway 的区域特定帐户所有
我发现这些答案/sf/answers/3670493361/和/sf/answers/3602477581/描述了如何使用正常的 CloudFront 分发解决问题。不过,我想知道: