Shishou Engineering Blog

Aim for Full Stack Engineer.

AWS SAM Localを使ってみた

最近AWS Lambdaを使うことが増えてきたので、ローカルでもテストしたいなぁと思い

AWS SAM LocalをVagrantのUbuntu16.04にインストールしてみました。

 

1.前提

ブラウザからアクセスできるようにVagrantfileには下記を設定してあります。

config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "private_network", ip: "192.168.111.222"

 

2.Docker CEのインストール

AWS SAM LocalはDockerを使用するため、Docker CEをインストールします。

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce
sudo adduser vagrant docker

#vagrant再ログイン docker ps #動作確認

 

3.Node.jsのインストール

現状、安定版はnpmでインストールするようなので、Node.jsをインストールします。

通常のインストールだと権限の問題でAWS SAM Localのインストールに失敗するため、NVMを使用します。

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash
source ~/.bashrc
nvm ls-remote #対応バージョンを確認
nvm install v8.5.0

 

4.AWS SAM Localのインストール

下記コマンドでインストールします

npm install -g aws-sam-local
sam --version #バージョンが表示されれば成功

 

5.Lambdaのサンプルを作成

まずは「Hello world.」とレスポンスを返すLambdaを作成してみます。

Lambdaのサンプル用フォルダと各種ファイルを作成します。

mkdir /vagrant/sample
cd /vagrant/sample

上記で作成したフォルダ内にtemplate.yamlを作成します

# template.yaml
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  Hello:
    Type: AWS::Serverless::Function
    Properties:
      Handler: hello.handler
      Runtime: python3.6
      Events:
        Api:
          Type: Api
          Properties:
            Path: /hellow
            Method: get

sam validateで内容が正しいかを確認できます。(Valid!と表示されればOK)

実行ファイルとして同じ階層にhello.pyを作成します。

def handler(event, context):
    return {'statusCode':'200', 'body':'Hello world.'}

下記コマンドでAWS SAM Localを起動します。

※Vagrantの場合はホストを0.0.0.0にする必要がありました。

sam local start-api --host 0.0.0.0

ブラウザから、「http://192.168.111.222:3000/hello」にアクセスし、「Hello world.」と表示されれば成功です。

 

 

 

2017-09-25 17:20:23


About
@hiroki8080

京都在住のフリーランスエンジニアです。

ITやIoT, 自作のCMS開発に関することを書いていきます。


主なスキル

Python, Java, C#

AWS, Unity

アプリケーション、フレームワーク、

ライブラリの設計、開発

お仕事のご依頼について

お仕事のご相談・ご依頼などありましたら、

お気軽にお問い合わせください。

e-mail:hiroki-m@gaia.eonet.ne.jp