我正在创建一个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


HostedZoneNameAliasTargetHostedZoneIdAliasTargetDNSName作为参数传递。

我的问题是由于标题中指定的权限错误,将无法创建堆栈。默认情况下,CloudFormation将使用创建堆栈的用户(我)的权限。我已经有了AdministratorAccess策略,因此应该被允许做所有事情,包括所有Route53操作。

我还尝试通过传递一个IAM角色来创建堆栈,该角色也具有AdministratorAccess策略,这给了我同样的错误。

模板中指定的所有其他资源(VPC,Loadbalancer,RDS等)都不会出现问题。

最佳答案

定义正确的HostedzoneId并将其传递到模板很重要。

由于您在执行CloudFormation脚本时具有管理员权限,因此您应该能够在您的帐户中将记录集添加到Route53托管区域中,而无需指定任何其他角色/配置文件。

但是,您需要确保传递正确的HostedzoneId。通常以字符串形式或使用CanonicalHostedZoneID attribute of the load balancer完成。

当将其作为字符串传递时,您需要确保参数类型为字符串类型,而不是AWS::Route53::HostedZone::Id

08-07 13:54