1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS CDKで"Error: spawnSync docker ENOENT"エラーが出た時の解決策

1
Posted at

エラー

$ 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

因みに、エラー文で調べるとesbuildをインストールすると解決できると記載の記事は複数ありますが、goではなくnodejsのモジュールを使用している場合の解決策(ローカルバンドル方法)のようでした。

利用可能な場合は、esbuild環境内でコードをバンドルするために使用されます。 それ以外の場合、バンドルは、Lambda 関数のターゲット アーキテクチャに基づいて、Lambda互換の Docker コンテナと Docker プラットフォームで行われます。
@aws-cdk/aws-lambda-nodejs module

dockerを使うとかなり時間がかかる可能性はありますが、どちらもエラーは解消出来そうです。

ローカル環境情報

$ 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)

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?