为什么 changeResourceRecordSets 未被授权访问此资源?

Dav*_*tti 5 amazon-web-services node.js amazon-iam aws-sdk

我正在尝试在 Route 53 中创建一个 Alias 类型的新记录,以告诉 Route 53 起诉 CloudFront 为该站点提供服务。我正在尝试使用以下代码执行此操作:

let options = {
    ChangeBatch: {
        Changes: [{
            Action: "CREATE",
            ResourceRecordSet: {
                AliasTarget: {
                    DNSName: '12kjh31k2hj3.cloudfront.net',
                    EvaluateTargetHealth: false,
                    HostedZoneId: 'JKEJWQHKJQWKK'
                },
                Name: 'example.com',
                Type: "A"
            }
        }],
        Comment: "S3 Hosted Site"
    },
    HostedZoneId: 'Z2FDTNDATAQYW2' // Fixed ID CloudFront distribution
};

route53.changeResourceRecordSets(options, function(error, data) {

    //
    //  1.  Check if there was an error
    //
    if(error)
    {
        return reject(error);
    }

    //
    //  -> Move to the next chain
    //
    return resolve(container);

});
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到:

AccessDenied: User: arn:aws:iam::1234567:user/cli_s3_hosting is not authorized to access this resource
Run Code Online (Sandbox Code Playgroud)

如果我使用 IAM 策略模拟器,则没有问题,如下面的屏幕截图所示。

在此处输入图片说明

我也尝试添加AdminFullAccess,但仍然出现相同的错误。我错过了什么?

sud*_*udo 6

您必须交换 HostedZoneId 的值,即Z2FDTNDATAQYW2应首先出现,然后是您的 Route53 托管区域。由于您尝试更改不属于您帐户的 CF 分发托管区域 (Z2FDTNDATAQYW2) 的资源记录集,因此出现此错误。