我正在创建一个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操作。
我还尝试通过传递一个IAM角色来创建堆栈,该角色也具有AdministratorAccess策略,这给了我同样的错误。
模板中指定的所有其他资源(VPC,Loadbalancer,RDS等)都不会出现问题。
最佳答案
定义正确的HostedzoneId并将其传递到模板很重要。
由于您在执行CloudFormation脚本时具有管理员权限,因此您应该能够在您的帐户中将记录集添加到Route53托管区域中,而无需指定任何其他角色/配置文件。
但是,您需要确保传递正确的HostedzoneId。通常以字符串形式或使用CanonicalHostedZoneID attribute of the load balancer完成。
当将其作为字符串传递时,您需要确保参数类型为字符串类型,而不是AWS::Route53::HostedZone::Id