弊社では開発環境にDockerを使用している。
開発環境はインフラ含め、アプリケーション開発を手元で行えるようにコンテナ化されている。
イメージはAmazonECRにあるので、開発する人は、ECRへログインしてイメージを取ってくることで、最新のイメージが使用できるようにな 今日、会社の開発者の方からECRにログインできないという相談を受けた。
ECRにログインする際は下記ワンライナーでログインするのだけど、それでエラーが出てしまう。
$(aws ecr --profile XXXXXXX get-login --no-include-email --region XXXXXXXXXX)
通常、このあとに、
Login Success!
みたいなのが表示されるのだが、今回はこんなエラーが表示されていた。
Error saving credentials: error storing credentials - err: exit status 1, out: `The user name or passphrase you entered is not correct.`
最初、credentialsファイルがおかしいのかな?とか、awscliが死んでるのかな?とか疑ったのだけど、credentialsファイルは問題なく、awscliも私と同じバージョンにしたけど、エラーは解消しなかった。 そこで、ネットで調べた所下記issueがヒットした。 https://github.com/docker/for-mac/issues/2295 Dockerのconfig.jsonに書いてある一行を削除しろと書いてあった。
$ vim  ~/.docker/config.json
{
        "auths": {
                "XXXXXXXXXXXXXXXXXXXXXXXX.amazonaws.com": {},
                "https://XXXXXXXXXXXXX.amazonaws.com": {}
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.06.0-ce (darwin)"
        },
        "credsStore": "osxkeychain"
こんなファイルがあるので、`”credsStore”: “osxkeychain”` をまるっと消してあげた。 そうしたら無事(?)にログインできるようになった。
この項目はどうやらユーザーの証明書をOSXのキーチェーンに保存するもののようで、恐らくそれがうまく取得できなくなったのだと思われる。 http://docs.docker.jp/engine/reference/commandline/login.html#creadentials-store 開発者の方も、OSXをアップデートしたら発生するようになったと言われたので、アップデート周りでおかしくなってしまったのかもしれない。 手動で削除しなくても、docker logout とかでもいけるようなので、もし同じ事象が発生したら試す価値あり。

カテゴリー: AWSIT