問題
Python で DynamoDB を簡単に使うためのライブラリの1つに PynamoDB がある。
このライブラリでは EndPoint を利用することで本番ではなくローカルの DynamoDB を利用することもできる。
しかし、ローカルでは動いていたのだが、アプリケーションを Docker に持っていった瞬間に掲題の Unable to describe table: Unable to locate credentials
というエラーが発生してしまったので、その原因を探る。
回答
PynamoDB をローカルで利用する場合であっても、botocore に何らかの初期化を行う必要がある。 これができない場合、上記のエラーが発生する。
具体的には、以下のページで定義されている環境変数の指定、あるいは、デフォルトで読み込むクレデンシャルファイルが存在している必要がある。
そのため、例えば、以下のような dummy を作成して、これを Docker コンテナの実行ユーザー以下の ~/.aws/credentials
にマウントすれば動作するようになる。
dummy_credentials
[default]
aws_access_key_id = dummy
aws_secret_access_key = dummy