代码之家  ›  专栏  ›  技术社区  ›  Robin-Hoodie

路由53 getHostedZone访问被拒绝。用户无权调用route53:GetHostedZone

  •  9
  • Robin-Hoodie  · 技术社区  · 8 年前

    我正在创建一个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将使用创建堆栈的用户me的权限。我有管理员访问策略,所以应该允许我做任何事情,包括所有Route53操作。

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

    模板中指定的所有其他资源(VPC、Loadbalancer、RDS等)没有问题地创造。

    1 回复  |  直到 8 年前
        1
  •  8
  •   ddewaele    8 年前

    定义并将正确的HostedzoneId传递到模板中非常重要。

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

    但是,您需要确保传递了正确的HostedzoneId。这通常作为字符串或使用 CanonicalHostedZoneID attribute of the load balancer .

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