【GO】AWS LambdaでGoで作ったバイナリを実行する


AWS LambdaでGOできないかなと思ったらあったので使ってみます。

実施環境はWindows10です。

 

まずはLambdaにアクセスして新しい関数を作ります。

Go.1.xがあるのでそれを選びます。

今回はテストなので他のサービスを使わないロールで作成。

 

node.jsのようなインライン編集はなく、ZIPを作る必要があります。

 

ちなみに何も変更せずにテストすると成功しました。

デフォルトでなにか入ってそう。

ここからZIPを作成します。

 

後の説明のためにサンプルからちょっと関数名を変えて書きます。

Lambda(Linux:Amazon Linux64bit[参考元])で動くようにクロスコンパイル。

 

Windowsでのzip化はbuild-lambda-zipの使用が推奨されています。

私の環境では普通にZIP化する方法(送る→ZIP、圧縮ソフト)でエラーが出ました。

{

“errorMessage”: “fork/exec /var/task/lambdaTest: permission denied”, “errorType”: “PathError”

}

 

現在関数名がtest()、バイナリがlambdaTest、ZIP名がlalalaです。

ハンドラに設定するのはバイナリ名(実行ファイル名)です。

他を指定してもエラーになります。

{

“errorMessage”: “fork/exec /var/task/lambdaTest: no such file or directory”,

“errorType”: “PathError”

}

 

Lambdaを使ったことのある人ならI/Oに注意すればサーバーで処理しているものを置き換えるのも簡単そうです。

 

node.jsを書ける人にとってわざわざgoを使う理由がどれくらいあるかは微妙だけど、処理速度を上げて省メモリでLambdaを使えると考えればいいのかもしれない。

何か新しく定期処理とかAPIを思いついたら実運用まで試してみたい。


コメントを残す

メールアドレスが公開されることはありません。