1
1

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.

AWS Lambdaをローカル環境に用意する(AWS-SAMのインストール)

Last updated at Posted at 2020-12-06

前書き

lambdaを実装する必要があり、ローカルでプログラムのテストができないか調べてたところ、AWS SAMを用いて検証するようなので設定方法を書いていきます。

###前提条件
Dockerが必要です。
+今回lambdaでgo言語を試すのでgoのインストールも必要です。

###検証環境

OS:Windows 10 Pro 64bit ver 1909
Docker version 19.03.12
言語環境:go version go1.14.1

#SAMで構築する検証環境について
AWS-SAMをインストールすることで下記のような環境をローカルに作成できます。

SAM.jpg

ローカルに仮想のAPI GaweWayを作りそこからLambda関数を実行する形です。
実行時にjsonを渡すことでevent発火時の動作も検証できます。

lambda関数の実行時にdockerコンテナが起動し関数が実行されます。そのため、dockerのインストールが必要になります。

SAMのインストール

AWS SAM CLI のインストール
上記リンクからAWS-SAM CLIをダウンロードしインストールします。

SAMをAPI GwateWay経由での実行する

チュートリアル
公式のチュートリアルを参考にHello-wouldを実行します。
#####1.テンプレートからアプリケーションの作成

Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
Choice: 1
What package type would you like to use?
        1 - Zip (artifact is a zip uploaded to S3)
        2 - Image (artifact is an image uploaded to an ECR image repository)
Package type: 1
Which runtime would you like to use?
        4 - go1.x
Runtime: 4
Project name [sam-app]: Hello-Would
AWS quick start application templates:
        1 - Hello World Example
        2 - Step Functions Sample App (Stock Trader)
Template selection: 1

#####2.アプリケーションのビルド

cd .\Hello-Would\
sam build       //アプリケーションのビルド

#####3.アプリケーションの実行
まずローカル上のAPI Gatewayを起動しAPI叩くことでlamdaが実行されます。

sam local start-api   //Gatewayの起動
> C:\Windows\System32\curl.exe http://127.0.0.1:3000/hello
Hello, (IPアドレス)
(参考)Windows 10上でcurlの実行

windows10 ver 1803以降は標準のcurlツールがあるのでそちらを使ってテストします。

ディレクトリ
C:\Windows\System32
C:\Windows\System32\curl.exe http://127.0.0.1:3000/hello

上記で実行ができました。
lambdaが呼び出されたときにdocker imageが起動するので初回や環境によって時間がかかります。
GawteWayを起動せず直接実行する際は、プロジェクトフォルダで

sam local invoke

で実行できます。

感想

AWS-CLIもインストールすることで、作成した関数をデプロイできます。
実行時にはまったところとして、ローカルの別のコンテナに接続する際はdocker networkを指定する必要だったり、(コンテナ上のDBにアクセスする場合)
event時の環境変数をjsonで設定できます。
そちらも別記事にしようと思います。

lambda関数を作成するうえでローカルに実行環境があるほうが便利ですが、意外と記事がなかったので作成しました。

誰かの役に立てば幸いです。
ありがとうございました。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?