↪️
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