2024-09-15 00:06:02
AWS SDK for PHP で読み込まれる認証情報のファイルパスがブラウザからのリクエストとCLIで変わるのは何故
AWS SDK for PHP 3.315.2 です。
ブラウザから AWS S3 にアップロードするときは例えば /path/to/.aws/credentials が読み込まれます。これはアプリ内のPHPコードで指定しているわけではなく、初期値として設定されているみたいなのでここに保存しています。最初は別のところに置いていましたが、実装時に「ここにないよ!」と言われたので移動しました。
アプリ内のCLIからPHPコードを実行したところ今度は「/root/.aws/credentials
にないよ!」と言われました。dockerコンテナ内から実行しており root ユーザのままなので、このパスになっていると思われますが、何故かブラウザからの実行と異なるパスが指定されています。
別々の認証情報を用意するべきということですかね。
環境変数 AWS_SHARED_CREDENTIALS_FILE
にパスを設定することでやりたいことは実現できました。
export AWS_SHARED_CREDENTIALS_FILE=/path/to/.aws/credentials