AWS CDK が使えるのかどうか試してみようと思ってハマった内容をメモとして残しておきます。
前提
MacOSX 10.14.6(Mojave)
AWS CLI 1.16.155
AWS SAM CLI 0.15.0 -> 0.52.0(バグの回避のためにバージョン上げた時のバージョン)
AWS CDK 1.44.0
Docker for Mac 2.3.0.3
この記事のゴール
下記のエラーを回避し、ローカル環境で Lambda が実行できていること。
発生したエラー
$ sam local start-api -t template.yaml --docker-network bridge
2020-06-07 10:52:59 Found credentials in shared credentials file: ~/.aws/credentials
Error: Template does not have any APIs connected to Lambda functions
やったこと
brew 経由で AWS SAM CLI をインストール
brew install aws-sam-cli
AWS CDK をインストール(AWSの公式を参考に)
npm install -g aws-cdk
クラメソさんの記事を参考に、API Gateway + Lambda をローカルで動かす準備をした。
直すためにやったこと
// pip 経由でインストールした aws-sam-cli を削除
$ pip uninstall aws-sam-cli
// シェル再起動
$ exec $SHELL -l
// sam コマンドがあるか確認。brew でインストールしたものが残っていそうなことは確認できた
$ which sam
/usr/local/bin/sam
// sam cli のバージョン確認
$ sam --version
SAM CLI, version 0.52.0
// 一応 brew 側のバージョンも確認
$ brew info aws-sam-cli
aws/tap/aws-sam-cli: stable 0.52.0 (bottled), HEAD
AWS SAM CLI 🐿 is a tool for local development and testing of Serverless applications
原因
AWS SAM CLI のバージョンが古かったことが原因だったっぽい。
最新のバージョンに上げたことで解消できた。
はっきりとした原因が発見できたわけではなく、いろんな記事を渡り歩いたらこの結論に至ったという形。
気づけたのは sam start-api
ではなく sam local invoke
を実行してみたら、nodejs
の 12.X
系のランタイムはサポートしてないとか言われたので、aws-sam-cli
のバージョン確認してみたらやたら古かった。
どうやらはるか昔に pip
経由でインストールした aws-sam-cli
があり、そっちのパスが通っていたらしく、今回brew
経由でインストールした方は利用されなかった。
今回の反省点
インストールしたことに満足せず、きちんとバージョン確認します・・・。