LoginSignup
3
3

More than 5 years have passed since last update.

AWS Cloud9で作ったGo言語のプログラムをLambdaにアップロードする方法

Last updated at Posted at 2018-08-14

メモです。
メモなので、ほぼ字です。

事前準備

  • 先にGo1.xのランタイムのLambdaを作っておく
    • CLIでもManagement Consoleでもどちらでも可
    • AWS Cloud9の「Create serverless application」では、Go言語のランタイムは選択不可なので
  • ソースは[File]->[New From Template]->[Go File]で雛形を作成可能
  • 2018/08/14(JST)現在のCloud9上のGoのバージョンは以下
$ go version
go version go1.9.1 linux/amd64

Lambda向け実装

こちらは、AWS Lambda で Go が使えるようになったので試してみたを参考している

  • 以下ターミナル上で、コマンドでパッケージをインストール
    • ターミナルは[Window]->[New Terminal]で開く
go get -u github.com/aws/aws-lambda-go/lambda
  • パッケージをインポート
import "github.com/aws/aws-lambda-go/lambda"
  • main()内で処理を行う関数ハンドラを呼び出す
lambda.Start(helloLambda)

ビルド&アップロード

  • LambdaのコンテナはLinux(AmazonLinux?)と思われるので、Linux向けにビルド
  • 以下全てターミナル上での作業
GOOS=linux GOARCH=amd64 go build -o Lambdaのハンドラ名
  • Zip圧縮
zip zipファイル名 ビルド済み実行ファイル(Lambdaのハンドラ名)
  • アップロード
aws lambda update-function-code --function-name [Lambda関数名] --zip-file fileb://[作ったファイル名]  [--region ap-northeast-1]

--region オプションは東京リージョンなど、AWS Cloud9が展開されていないリージョンのLambdaにアップロードする場合は必須

  • 以下のようなレスポンスが返ってくればOK
{
    "TracingConfig": {
        "Mode": "PassThrough"
    }, 
    "CodeSha256": xxxxxxxxxxxxxxxxxxxxxxxxxxxxx, 
    "FunctionName": [Lambda関数名], 
    "VpcConfig": {
        "SubnetIds": [], 
        "VpcId": "", 
        "SecurityGroupIds": []
    }, 
    "MemorySize": 128, 
    "FunctionArn": [Lambda関数のロール], 
    "Version": "$LATEST", 
    "Role": [Lambda関数のロール], 
    "Timeout": 4, 
    "LastModified": "2018-08-13T11:05:43.413+0000", 
    "Handler": [ハンドラ名], 
    "Runtime": "go1.x", 
    "CodeSize": xxxxxxx, 
    "Description": ""
}

あとは、テスト実行するなり、API越しに叩くなり。。。

参考

AWS Lambda で Go が使えるようになったので試してみた

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