エラー
$ 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)
参考