↪️
rootで動くコンテナでawsクレデンシャルを読み込めなかった
小ネタです
背景
rootで動くコンテナの中でawscliを使いたく、以下のようにホストのAWSクレデンシャルを共有しました。
docker-compose.yaml
volumes:
- "~/.aws/:/root/.aws:ro"
しかしAWSのクレデンシャルは使えませんでした。
# aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
ということで調査をします。
前提
- コンテナOSはubuntu 22.04
- profile
Defaultを使用- ホストでは問題なく使用可能
ひとまずaws configureする
aws configureしてみて、どこにクレデンシャルが生成されるか確かめます。
# aws configure
ファイルを探します
# find / -name "credentials"
/root/.aws/credentials
/tmp/.aws/credentials
tmpに生成されている...?
答え合わせ
$HOMEを見てみると/tmpとなっていました。
# echo $HOME
/tmp
awscliはこちらを参照しており、awsクレデンシャルが無いためエラーを吐いたようです。
てっきり/rootだと思い込んでいました。
ドキュメントにもこのようにあります。
$HOME またはチルド ~ (Unix ベースのシステムの場合) を使用して参照されます
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-files.html#cli-configure-files-where
所感
/rootのクレデンシャル読むだろ!と安易に考えるのは良くなかったですね。
なにはともあれ解決出来てよかったです。
Discussion