0
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 3 years have passed since last update.

sam-beta-cdkのlambdaのローカル実行をWindows10+Vagrant+VirtualBox+Ubuntuで試してみたメモ

Last updated at Posted at 2021-07-31

概要

aws cdkでデプロイする前に、lambdaのローカル実行を試したい。
cdk synthでsamテンプレートを出して実行する方法もある(前の記事)が、もっと楽にできないかと探したところ、sam-cdkのベータ版で行えるようであった。

Better together: AWS SAM and AWS CDK
AWS Cloud Development Kit (CDK) (Preview)

基本的にはこれをなぞる。

環境

  • Windows 10 Home 21H1 19043.1151
  • Vagrant 2.2.18
  • Virtualbox 6.1.26 r145957
  • ubuntu/focal64 (virtualbox, 20210720.0.1)
  • docker 20.10.7
  • sam-beta-cdk 1.22.0
  • Node.js v14.17.4
  • aws-cdk 1.116.0

Vagrantの準備

VsCodeでVagrant内へと接続

ファイル共有でエラーが出たため、ここからの作業は仮想環境内で行う。
【設定爆速】VS CodeのRemote Developmentを使ってSSH接続したEC2上のファイルを編集するを参考に、VsCodeのリモート機能を利用した。

プロジェクトの準備

※ Windowsと共有していないフォルダ内で作業すること。
まずは、テンプレートのプロジェクトをダウンロードする。(*)

cd /home/vagrant/src/
export SAM_CLI_TELEMETRY=0
sam-beta-cdk init --project-type CDK --package-type Zip --runtime nodejs14.x  --app-template hello-world --cdk-language typescript --name test
cd sam-cdk-app-demo
code .

initが成功すると以下のように表示される。

Cloning app templates from https://github.com/aws/aws-sam-cli-app-templates

    -----------------------
    Generating application:
    -----------------------
    Name: test
    Runtime: nodejs14.x
    Dependency Manager: npm
    Application Template: hello-world
    Output Directory: .
    Project Type: CDK 
    CDK application language: typescript

1度のinitではうまくいかず、2度目に同じinitコマンドをうったらうまくいった例もあった。まだ不安定?

aws-cdkのインストール

aws-cdkはバージョンアップが早いため、ncuで更新しておく。

npm i -D npm-check-updates
npx ncu -u
npm i

invokeで動作確認

まずはlambda単体で動作確認。

sam-beta-cdk local invoke sam-cdk-app-demo/hello-world-lambda-function

Dockerが動いてhello worldが表示されたら成功。

Synthesizing CDK App[$(__git_ps1):~/src/sam-cdk-app-demo$ sam-beta-cdk local invoke sam-cdk-app-demo/hello-world-lambda-function 
Invoking app.lambdaHandler (nodejs14.x)
Image was not found.
Building image.......................................................................................................................................................................................................................................................................................
Skip pulling image and use local one: amazon/aws-sam-cli-emulation-image-nodejs14.x:rapid-1.22.0.dev202107140310.

Mounting /home/vagrant/src/sam-cdk-app-demo/hello-world as /var/task:ro,delegated inside runtime container
END RequestId: dea11ccb-dbf4-4e3b-a664-d8da3ef3a907
REPORT RequestId: dea11ccb-dbf4-4e3b-a664-d8da3ef3a907  Init Duration: 0.75 ms  Duration: 202.74 ms     Billed Duration: 300 ms Memory Size: 128 MB   Max Memory Used: 128 MB
{"statusCode":200,"body":"{\"message\":\"hello world\"}"}

api で確認

sam-beta-cdk local start-api --host 0.0.0.0

Vagrantfileで今回は192.168.50.10で仮想環境を立ち上げているので、
http://192.168.50.10:3000/hello にアクセスする。
{"message":"hello world"}と帰ってきたら成功。

ファイル共有でnpm installのエラー

VagrantとWindowsのファイル共有でnpm installを行うと、以下のようなエラーが発生。

 Maximum call stack size exceeded
 ERR! EPROTO: protocol error, symlink '../jsesc/bin/jsesc' -> '/vagrant/project/sam-cdk-app-demo/node_modules/.bin/jsesc'

npm rebuildnpm i no-bin-linksも試したがダメだったのであきらめた。

0
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
0
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?