Route53 getHostedZone 访问被拒绝。用户无权调用 route53:GetHostedZone

Route53 getHostedZone AccessDenied. User doesn't have permission to call route53:GetHostedZone

我正在创建一个 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 将使用创建堆栈的用户 me 的权限。我有 AdministratorAccess 策略,所以应该允许我执行所有操作,包括所有 Route53 操作。

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

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

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

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

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

来完成

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