AWS LambdaをGolangで試してみた
GolangでAWS Lambda(以下、Lambda)用の関数パッケージを作成し、実行テストを行うまでを書いています。
Lambdaがサポートする言語は、Node.js、Python、Java、C#、Goですが、今回は一番書き慣れてるGoを利用してみました。
関数パッケージを作成
Lambdaで実行する関数パッケージを作成します。
実行コードを作成
ローカルの適当な場所に作業ディレクトリを作成し、その中に 公式サイトを参考にしてhello.goファイルを作成しました。
Lambda用ライブラリのインストール
go get コマンド で Lambda用ライブラリをインストールします。
% go get -u github.com/aws/aws-lambda-go/lambda package context: unrecognized import path "context"
contextに関するエラーが発生しました。
久しぶりにgoを触ったので、ローカルのgoのバージョンが古いのが原因らしく、goをバージョンアップして再度go getしたら解決しました。
% brew update % brew upgrade go go 1.6 -> 1.10.3
ビルド実行
ターゲットを指定して、以下コマンドを実行してビルドします。
% GOOS=linux GOARCH=amd64 go build -o hello % ls hello* hello.go
Zipに圧縮
以下コマンドを叩いてZipに圧縮します。
% zip hello.zip hello % ls hello* hello.go hello.zip
これで関数パッケージの作成が完了です。
IAM ロール作成
Lambdaの関数を作るためにはIAM ロール(以下ロール)を使う必要があるため、作成していきます。
AWSのコンソールから IAM->ロール を選択して以下ページにいきます。
ロール作成ボタンを押下して、ロール作成ページを表示します。
「このロールを使用するサービスを選択」でLambdaを選択し、「次のステップ:アクセス権限」を押下する。
今回はCloudWatchの書き込みを許可するAWSLambdaBasicExecutionRoleを選択して、「次のステップ:確認」を押下する。
任意のロール名を選択し、「ロールの作成」を押下する。
ロール一覧に先程作成したものが追加され、これでロール作成は完了です。
Lambda関数作成
Lambda->関数にある「関数の作成」を押下する。
一から作成、ランタイムは「Go 1.x」、ロールは先程作成したもの選択し、「関数の作成」を押下します。
関数が作成されました。
Lambda実行テスト
関数パッケージのアップロードから作成したhello.zipをアップし、「保存」を押下します。
保存ができたら「テスト」を押下します。以下のようにテストイベントを作成し、「保存」を押下します。
作成したテストイベントのhelloを選択し「テスト」を押下すると、結果が返却され、正しく実行されたことが分かります。
まとめ
GolangでLambda関数の実行テストまでやってみました。
LambdaはS3やCloudWatchなど他のAWSサービスとも連携ができるので、試してみたいと思います。