この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
マネージメントコンソールにて API Gateway のカスタムドメインの相互 TLS 設定を登録する際に、トラストストア URI の入力箇所にアップロードした pem ファイル(S3 URI)を指定後、保存をすると以下のエラーメッセージが出力されました。
Unable to access truststore URI s3://{S3 バケット名}/******.pem version N/A.
なお、登録の際に利用する IAM ユーザには、AdministratorAccess の IAM ポリシーと、特定の IP アドレスからのアクセスを拒否するための IAM ポリシーを付与しています。
事象解消について、どのように対応すればよいでしょうか?
どう対応すればいいの?
操作を行っている IAM ユーザーのポリシーに IP アドレスによる Deny が含まれていることが原因です。
以下の様な IAM ポリシーをアタッチしている IAM ユーザーで操作を行った場合、AdministratorAccess 権限が付与されていても "Unable to access truststore URI ~~" のエラーが発生します。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"<アクセス元の IP アドレス>"
]
}
}
}
}
これは API Gateway サービスがユーザーに変わって操作を行うために拒否されている動作となります。
そのため、IP アドレス制限の記述をなくすか、以下のように ViaAWSService キーを使用することによってもカスタムドメインの作成が成功します。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"<アクセス元の IP アドレス>"
]
},
"Bool": {
"aws:ViaAWSService": "false"
}
}
}
}