#■状況
EC2インスタンス内でPROXY接続している場合、
IAMロールで許可されているのに権限エラーが発生する。
#■結論
対応方法としては、
Linux, OS X, or Unix
export NO_PROXY=169.254.169.254
Windows
set NO_PROXY=169.254.169.254
を実行すればよい。
#■参考
Using an HTTP Proxy
http://docs.aws.amazon.com/cli/latest/userguide/cli-http-proxy.html
#■何故この設定で動作するのか?
AWSのドキュメントによると、
インスタンスメタデータからセキュリティ認証情報を取得する
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials
AWS SDK、AWS CLI、および Tools for Windows PowerShell は EC2 インスタンスメタデータサービスから自動的に認証情報を取得して使用します。
とのことなので、インスタンスメタデータから
IAMロールの認証情報を取得できず、
AWS CLIの実行でエラーが発生するということなのでしょう。
#■確認
実際に確認してみました。
環境:
AmazonLinux
Amazon Linux AMI release 2016.09
AWS CLI
1.10.56
##■PROXY設定あり かつ NO_PROXY設定なし の場合
##■PROXY設定あり かつ NO_PROXY設定あり の場合
##■結果
確かに、
PROXY設定を付与するとIAMロールで許可されていても認証情報がないといわれ、
その状態でNO_PROXY設定を付与すると問題なくIAMロールの認証情報が使用されることが確認できました。