ikk*_*kjo 8 python amazon-web-services amazon-route53 aws-cdk
我正在使用 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": {
"Name": "dev.mydomain.com.",
"Type": "A",
"AliasTarget": {
"DNSName": {
"Fn::GetAtt": [
"StaticSiteHTTPSSiteDistributionCFDistribution3BXXXXX",
"DomainName"
]
},
"HostedZoneId": "Z2YYYYYYYYYW2"
},
"HostedZoneId": "Z1XXXXXXXXXXS1"
},
Run Code Online (Sandbox Code Playgroud)
from_lookup生成"HostedZoneId": "/hostedzone/Z1XXXXXXXXXXS1",而在 template.json 中from_hosted_zone_attributes生成,但无论哪种方式都找不到托管区域。然而,这似乎表明找到托管区域 OK,运行条目也在那里创建。"HostedZoneId": "Z1XXXXXXXXXXS1"deploysynthcdk contextsynth
我还尝试通过 获取托管区域from_hosted_zone_id,from_hosted_zone_attributes这也会引发错误,但我的理解是他们实际上并没有在我的帐户中查找任何内容。
顺便说一句,使用 CDK 创建新的托管区域是可行的,并且它包含别名记录。
我怎样才能进一步调试这个?我应该使用不同的机制来提供或查找我的托管区域吗?
joh*_*kin 14
很抱歉 Python 中没有这个,但我之前已经获得了一个适用于 CloudFront 发行版的 Route53 别名。
我将尝试通过首先导入 Route53 目标模块来创建别名记录目标:
...
import route53 = require('@aws-cdk/aws-route53');
import targets = require('@aws-cdk/aws-route53-targets');
Run Code Online (Sandbox Code Playgroud)
然后,当您实例化您的发行版时,您可以使用以下命令创建别名记录目标:
const hostedZoneId; // get from props or SSM lookup (Z****)
const zoneName; // get from props or SSM lookup (mydomain.com)
const myHostedZone = route53.HostedZone.fromHostedZoneAttributes(this, 'MyImportedHostedZone', {
hostedZoneId,
zoneName,
});
aliasRecord = new route53.ARecord(this, 'MyAliasRecord', {
target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(distribution)),
zone: myHostedZone,
recordName: 'SiteAliasRecord',
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16367 次 |
| 最近记录: |