問題の背景
シェル(bashなど)の環境変数にProxy設定をしている場合、その設定は一般的にそのシェルで実行される全てのコマンドに影響します。これにより、aws s3
コマンドでS3へアクセスする際に、意図せずProxyを経由することがあり、一部の環境ではProxy設定が原因で問題が発生することがあります。そこで、今回は.bashrc
で設定されたProxy設定を回避して、AWS S3にアクセスする方法を解説します。
実行環境
OS : AlmaLinux
Version : 9.2 (Turquoise Kodkod)
EC2インスタンスはVPCプライベートネットワーク下にあり、S3へのアクセス口としてVPC Gateway Endpointsを立てています。
また、EC2サーバーから対象のS3バケットへの正しい権限設定などを行ない、アクセスが可能になっていることが前提となります。
解決方法
NO_PROXY
環境変数を設定することで、特定のS3バケットやエンドポイントに対してProxyを経由せずに接続するようになります。この環境変数には、Proxyを経由せずに直接接続するホスト名をカンマ区切りで指定できます。
東京リージョン(ap-northeast-1)のS3バケットに対してProxyを経由せずに接続したい場合、以下のように環境変数を設定します。
export NO_PROXY=s3-ap-northeast-1.amazonaws.com
また、aws cliのコマンド実行時には、コマンドラインオプションの--endpoint-url
を試用して接続先のs3エンドポイントを明示的に指定します。
例えば、aws s3 cp
コマンドでs3バケットからファイルをダウンロードする場合は、以下のようになります。
aws s3 cp s3://hoge/fuga.txt ./ --endpoint-url https://s3-ap-northeast-1.amazonaws.com
これにより、aws s3 cp
コマンドは.bashrc
のProxy設定を無視して、指定したエンドポイントへ直接接続し、ファイルをダウンロードすることが出来ます。
参照