"Error: spawnSync docker ENOENT"の解消方法

記事タイトルとURLをコピーする

こんにちは、SWX3人目の熊谷(悠)です。
今回はCDKで出たエラーを直した備忘録です。

エラー

$ cdk bootstrap
Error: spawnSync docker ENOENT
    at Object.spawnSync (node:internal/child_process:1110:20)
    at Object.spawnSync (node:child_process:871:24)
    at dockerExec (/example-app/node_modules/aws-cdk-lib/core/lib/bundling.ts:498:16)
    at Function.fromBuild (/example-app/node_modules/aws-cdk-lib/core/lib/bundling.ts:279:5)
    at new Bundling (/example-app/node_modules/@aws-cdk/aws-lambda-go-alpha/lib/bundling.ts:120:46)
    at Function.bundle (/example-app/node_modules/@aws-cdk/aws-lambda-go-alpha/lib/bundling.ts:71:22)
    at new GoFunction (/example-app/node_modules/@aws-cdk/aws-lambda-go-alpha/lib/function.ts:109:22)
    at new Notification (/example-app/lib/notification.ts:27:21)
    at new ExampleStack (/example-app/lib/example-app-stack.ts:31:26)
    at /example-app/bin/example-app.ts:61:3

Subprocess exited with error 1

解決策

dockerをインストールしました。

$ sudo dnf install docker

(CDK実行ユーザーがdockerを触れるように権限設定もしました。)

docker psして以下のようなエラーが出て無ければOK

## NG
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied

## OK
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
$ sudo gpasswd -a $(whoami) docker
$ sudo chgrp docker /var/run/docker.sock
$ sudo systemctl restart docker

↑でダメだったら。ここまですれば流石に行けると思います。

$ sudo chown root:ec2-user /var/run/docker.sock
$ sudo systemctl restart docker

原因

このモジュールを使用するには、Goがインストールされているか(go1.11以降)、Dockerがインストールされている必要があります。
@aws-cdk-lib.aws_lambda_nodejs module

ローカル環境情報

$ ec2-metadata --ami-id
ami-id: ami-08c84d37db8aafe00

$ cat /etc/system-release
Amazon Linux release 2023 (Amazon Linux)

$ uname -a
Linux example.ap-northeast-1.compute.internal 6.1.38-59.109.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jul 11 23:51:29 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

$ aws --v
aws-cli/2.9.19 Python/3.9.16 Linux/6.1.38-59.109.amzn2023.x86_64 source/x86_64.amzn.2023 prompt/off

$ node -v
v18.17.0

$ go version
bash: go: command not found

$ cdk --version
2.89.0 (build 2ad6683)

参考

https://maku.blog/p/cj9i4m3/

https://docs.aws.amazon.com/cdk/api/v1/docs/aws-lambda-nodejs-readme.html

https://docs.aws.amazon.com/cdk/api/v2/docs/aws-lambda-go-alpha-readme.html

https://tech.librastudio.co.jp/entry/index.php/2018/07/14/post-1924/

https://qiita.com/berukokoko/items/57cdcb668cf4e2bed292