Posted at

プロキシ利用時のAWS CLIで Unable to locate credentials 発生時の対応

More than 3 years have passed since last update.


■状況

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設定なし の場合

image


■PROXY設定あり かつ NO_PROXY設定なし の場合

image


■PROXY設定あり かつ NO_PROXY設定あり の場合

image


■結果

確かに、

PROXY設定を付与するとIAMロールで許可されていても認証情報がないといわれ、

その状態でNO_PROXY設定を付与すると問題なくIAMロールの認証情報が使用されることが確認できました。