LoginSignup
6
6

More than 5 years have passed since last update.

[AWS] Lambdaをローカルで開発するためにAWS SAMに入門してみた (Hello World編)

Last updated at Posted at 2018-12-27

Features

  • aws samを利用してテンプレートプロジェクトが作れるので楽です
  • Makefileは利用するgoライブラリだけをDLするように変更してください
  • テンプレートのgo fileを変更して新しいfunctionを作成してください

Requirement

  • golang:1.11.4
  • pip
  • python
  • docker (local lambda test)

Installation

  • aws-cli
  • aws-sam-cli
  • golang (1.x)

aws-sam-cli

AWS公式サイトに則って、aws-sam-cliをDLする。

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html

  1. pythonとpipを入れる

    $ brew install python
    $ pip install --upgrade pip
    $ pip install --user --upgrade setuptools
    
  2. aws-cliを入れてconfigureを設定をする

    $ pip install awscli --upgrade --user
    $ aws configure
    
  3. aws samコマンドをセットアップする。

    $ pip install --user --upgrade aws-sam-cli
    ※ 既に古いバージョンを入れてる人は一旦uninsallする
    $ npm uninstall -g aws-sam-local
    
  4. pathを通す

    $ USER_BASE_PATH=$(python -m site --user-base)
    $ export PATH=$PATH:$USER_BASE_PATH/bin
    
  5. コマンドが使えるかの確認

    $ sam --version
    SAM CLI, version 0.10.0
    

golang (1.x)

  1. golangインストールに使うgoenvのインストール

    $ brew install goenv
    $ goenv -v
    goenv 1.23.2
    
  2. DLできるgoを確認

    $ goenv install -l
    
  3. 1.xのgolangをインストール

    $ goenv install 1.11.4
    
  4. 利用するgolangのバージョンを指定

    $ goenv global 1.11.4
    $ go version
    go version go1.11.4 darwin/amd64
    

    ※ 切替可能なgolang versionの確認は↓

    $ goenv versions
    

Usage

  1. samを利用してテンプレートをインストール

    $ sam init --runtime go1.x --name hello
    

    ※ 確認

    $ cd hello
    $ tree
    .
    ├── Makefile
    ├── README.md
    ├── hello-world
    │   ├── main.go
    │   └── main_test.go
    └── template.yaml
    
  2. Makefileを修正して、buildが通るようにする

    $ vim Makefile
    ~
    all: deps clean build # <- 追加
    
    deps:
    #       go get -u ./...  # <- コメントアウト
            go get -u github.com/aws/aws-lambda-go/events # <- 追加
            go get -u github.com/aws/aws-lambda-go/lambda # <- 追加
    ~
    
  3. buildする

    $ make
    
  4. Api Gatewayのイベント作成
    Api Gatewayがリクエストを受けると、イベントを発行してaws lambdaに渡されます。
    このイベントを表しているjsonファイルを作成します。

    $ sam local generate-event apigateway aws-proxy  > get_event.json
    
  5. lambdaをローカルで動かす
    sam local invoke を実行すると、lambdaが動きます。

    $ sam local invoke HelloWorldFunction --event get_event.json
    
  6. localでAPI Gatewayを動かす

    $ sam local start-api
    
    ~
    
    http://127.0.0.1:3000/
    

    ↓のURLにアクセスして、jsonを確認。

    http://127.0.0.1:3000/hello
    
6
6
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
6
6