↪️

rootで動くコンテナでawsクレデンシャルを読み込めなかった

2023/05/28に公開

小ネタです

背景

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
  • profileDefaultを使用
    • ホストでは問題なく使用可能

ひとまず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