我正在创建一个AWS Cloudformation堆栈,其中我将记录集添加到现有的Route53托管区域。资源指定如下(以YAML格式):
DNS:
Type: AWS::Route53::RecordSetGroup
Properties:
HostedZoneName: !Ref HostedZoneName
Comment: Zone apex alias targeted to myELB LoadBalancer.
RecordSets:
- Name: !Join [ ".", ["alb", !Ref HostedZoneName]]
Type: A
AliasTarget:
HostedZoneId: !Ref AliasTargetHostedZoneId
DNSName: !Ref AliasTargetDNSName
HostedZoneName
,AliasTargetHostedZoneId
和AliasTargetDNSName
作为参数传入。
我遇到的问题是由于标题中指定的权限错误,堆栈将无法创建。默认情况下,CloudFormation将使用创建堆栈的用户的权限。我已经获得了AdministratorAccess策略,因此我应该被允许执行所有操作,包括所有Route53操作。
我还尝试通过传递一个也具有AdministratorAccess策略的IAM角色来创建堆栈,这给了我同样的错误。
模板中指定的所有其他资源(VPC,Loadbalancer,RDS,..)都可以毫无问题地创建。
答案 0 :(得分:3)
定义并将正确的HostedzoneId传递到模板中非常重要。
由于您在执行CloudFormation脚本时拥有管理员权限,因此您应该能够将记录集添加到帐户中的Route53托管区域,而无需指定任何其他角色/配置文件。
但是,您需要确保传递正确的HostedzoneId。这通常以字符串形式完成,或使用CanonicalHostedZoneID attribute of the load balancer。
完成将其作为字符串传递时,您需要确保参数类型的类型为字符串,而不是AWS::Route53::HostedZone::Id