AWS SAM CLI x Dockerでローカル開発できるように設定している途中で、以下のエラーが発生しました。
$sam local invoke
...
Running AWS SAM projects locally requires Docker. Have you got it installed and running?
この「Running AWS SAM projects locally requires Docker. Have you got it installed and running?」というエラーの対処方について書いていきます。
このエラーは何?
まず日本語に訳してみると、「AWS SAMのプロジェクトを実行するにはDockerが必要だけど、Dockerの準備できてる?」ということみたいです。
Dockerがそもそも入っていない人は入れましょう。
私はエラー発生時すでにインストール済みだったので、別要因だと思われます。
Dockerがちゃんと動くか確認
Dockerがちゃんと動いているか試してみます。
$docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
そもそもDockerがちゃんと動かせる状態になっていない模様。
何がいけなかったの?
DockerもAWS SAM CLIもはじめましてな私の場合は、ログイン周りができていませんでした(ブログとはいえこれを明言するのって恥ずかしいですね)
まずはターミナル上でDockerにログインできているか確認
$echo a | docker login
Error: Cannot perform an interactive login from a non TTY device
はい、ここからダメでした。
「そもそもログイン以前にアカウント登録したっけ?」と思ったらしてなかったっぽい。
ということで、Docker Hubにアカウント登録しました。
登録ができたら、ログインします。
$docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: [ユーザ名]
Password: [パスワード]
Login Succeeded
Logging in with your password grants your terminal complete access to your account.
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/
ログインできたっぽい。
これで改めて”$sam local invoke”を実行したら動きました。
今回は使わなかったけど、別の対策
今回使用しませんでしたが、調べている中で見つけたものを一つ紹介。
以下のコマンドで解決する問題もあるようです。
gpasswd -a <USER> docker
このコマンドが何か、なぜこれが必要かについてはそのうち記載したいと思います。