Route53 getHostedZone AccessDenied。用户无权调用route53:GetHostedZone

时间:2018-01-10 09:56:04

标签: amazon-web-services amazon-cloudformation amazon-iam

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

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

模板中指定的所有其他资源(VPC,Loadbalancer,RDS,..)都可以毫无问题地创建。

1 个答案:

答案 0 :(得分:3)

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

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

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

完成

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