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

Rob*_*die 8 amazon-web-services aws-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
Run Code Online (Sandbox Code Playgroud)

HostedZoneName,AliasTargetHostedZoneIdAliasTargetDNSName作为参数传入。

我遇到的问题是由于标题中指定的权限错误,堆栈不会创建。默认情况下,CloudFormation 将使用创建堆栈的用户的权限,我。我有管理员访问策略,所以我应该被允许做所有的事情,包括所有的 Route53 操作。

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

模板中指定的所有其他资源(VPC、Loadbalancer、RDS 等)都可以正常创建。

dde*_*ele 8

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

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

但是,您需要确保传递了正确的 HostedzoneId。这通常作为字符串或使用负载均衡器CanonicalHostedZoneID 属性完成

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

  • 为什么是 `String` 而不是特定类型? (2认同)
  • 因此,当 AWS 的 doco 无用时,可以进行救援。我也使用了 HostedZone::Id 类型(因为我为什么不呢?!)并且一直用头撞键盘,直到我找到了这篇文章。 (2认同)