AmazonRoute53FullAccess を付与した IAM ユーザで AccessDenied が発生するときの対処方法
困っていた内容
AWS CLI を使って Amazon Route 53 のレコードを変更すると「Access Denied」が表示されます。操作している IAM ユーザには AmazonRoute53FullAccess を付与しており、レコードの表示等のその他操作は問題なく実施できています。 AmazonRoute53FullAccess 以外にも権限が必要なのでしょうか。対処方法を教えてください。
$ aws route53 change-resource-record-sets --hosted-zone-id Z2FDTNDATAQYW2 --change-batch file://change-resource-record-sets.json An error occurred (AccessDenied) when calling the ChangeResourceRecordSets operation: User: arn:aws:sts::123456789012:assumed-role/hato/botocore-session-123456789 is not authorized to access this resource
どう対応すればいいの?
--hosted-zone-id
の値をご確認ください。
--hosted-zone-id
オプションで指定する値は、変更するレコード(例:example.com)が登録されたホストゾーンのIDとなります。この値に、AWSが管理するドメイン(cloudfront.netやelb.amazonaws.com)など管理外ドメインのホストゾーンIDを指定すると「Access Denied」が発生します。
そのため、--hosted-zone-id
オプションに誤ったホストゾーンIDを指定していないか確認してください。
ホストゾーンIDの確認方法
レコードのホストゾーンIDは、Amazon Route 53 コンソールもしくは AWS CLI のlist-hosted-zones
で確認できます。
なお、AWSが管理するドメインのホストゾーンIDは、レコードセットのAliasTarget
で指定する関係から公開されており、現時点で次の値となります。
(AliasTarget
のHostedZoneId
の値をそのまま--hosted-zone-id
オプションで使用するとエラーとなりますのでご注意ください)
Z2FDTNDATAQYW2
(CloudFront)Z14GRHDCWA56QT
(ALB/CLB、東京リージョン)Z31USIVHYNEOWT
(NLB、東京リージョン)Z5LXEXXYW11ES
(ALB/CLB、大阪リージョン)Z1GWIQ4HH19I5X
(NLB、大阪リージョン)
{ "Comment": "optional comment about the changes in this change batch request", "Changes": [ { "Action": "DELETE", "ResourceRecordSet": { "Name": "hato.example.com.", "Type": "A", "AliasTarget": { "HostedZoneId": "Z2FDTNDATAQYW2", "DNSName": "xxxxxx.cloudfront.net.", "EvaluateTargetHealth": false } } } ] }