golangを使用したAmazonラムダ

今年の1月中旬に、AmazonはラムダのGo サポートを発表しました。

素晴らしいニュースですが、今はGolangでコードを書いた経験のないこれらの行を書いているので、記事の執筆と並行して切り株やくぼみを通り抜けて、Goで最初に動作するラムダに行きます。



Goをインストールしてワークスペースをセットアップする



実際には、 Goのインストールを開始する必要があります。 私のマシンはIntelプロセッサー上のWindows 10です。 ここでは複雑なことは何もありません:ダウンロード、実行。 GoがPATH環境変数に<インストールパス> \ binへのパスを登録したことを確認するか、検証のためにcli(cmdなど)を実行します。



プロジェクトフォルダーを作成します。



C:\Users\a_gol\go>cd C:\Go C:\Go>mkdir workspace C:\Go>set GOPATH=C:\Go\workspace C:\Go>cd %GOPATH% C:\Go\workspace>
      
      





コードを編集するには、 Sublime Text 3を使用するため、Goに適合させる必要があります。 これを行うには、 パッケージコントロールをインストールし、それを使用して( 設定->パッケージコントロール->パッケージのインストール-> GoSublime )、 GoSublimeプラグインをダウンロードします。

Sublime Textを再起動します。



Sublime Textの設定の詳細については、 こちらを参照してください



では、最初のHello、worldで Goを試してください





画像



ラムダオンゴー





ラムダを記述してテストしてみましょう。ラムダは、json形式の2つのフィールドから入力オブジェクトを取得し、json形式の応答と成功した完了の識別子を提供します。



リクエスト:



 { "id": 12345, "value": "some-value" }
      
      





答えは:



 { "message": "processed request ID 12345", "ok": true }
      
      





この例は記事で説明されています



 package main import ( "fmt" "github.com/aws/aws-lambda-go/lambda" ) type Request struct { ID float64 `json:"id"` Value string `json:"value"` } type Response struct { Message string `json:"message"` Ok bool `json:"ok"` } func Handler(request Request) (Response, error) { return Response{ Message: fmt.Sprintf("Processed request ID %f", request.ID), Ok: true, }, nil } func main() { lambda.Start(Handler) }
      
      





lambdaのアーカイブを構築するには、 aws-lambda-goライブラリをダウンロードする必要があります。 ここで、Linux、macOS、およびWindowsで実行する必要があるアーカイブを作成する手順を確認できます。



すべてをステップで実行しましょう。



  1. パッケージをダウンロードします。



     go get -u github.com/aws/aws-lambda-go/cmd/build-lambda-zip
          
          





  2. cmdを使用して環境変数を設定します。



     set GOOS=linux set GOARCH=amd64
          
          





  3. Goコンソールでは、次のコマンドを実行してアーカイブを収集できます。アーカイブはラムダに展開します(これらのコマンドはWindows用で、他の軸用です )。



     go build -o main main.go %USERPROFILE%\Go\bin\build-lambda-zip.exe -o main.zip main
          
          





これらの手順の後、main.zipアーカイブが表示され、ラムダにダウンロードする必要があります。



画像



AmazonでLambdaを作成する





AWSコンソールからラムダを作成します。

これを行うには、次のものが必要です。



  1. 目的の地域でLambdaサービスを選択します
  2. 関数の作成をクリックします
  3. フィールドに入力します

    画像

  4. 作成後、ラムダコンソールが開きます。Functionコードブロックで、[アップロード]ボタンをクリックしてmain.zipアーカイブをロードする必要があります。 [ハンドラ]フィールドでmainを指定することを忘れないでください。

    画像

  5. コンソールの上部で、[保存]をクリックします。


ラムダをテストします。 これを行うには、コンソールの上部にある[テスト]ボタンをクリックしてテストを作成します。 テスト入力を追加して保存します。



 { "id": 12345, "value": "some-value" }
      
      





画像



[テスト]ボタンをクリックして、コンソールの上部でこのテストスクリプトを呼び出すことができます。



画像



Pot穴





環境変数が設定されていません



 { "errorMessage": "fork/exec /var/task/main: exec format error", "errorType": "PathError" }
      
      





 set GOOS=linux set GOARCH=amd64
      
      





cmdでチェックアウトします:



 echo %GOOS% echo %GOARCH%
      
      







可能性のあるバンプ





1.関数コードブロックの[ハンドラー]フィールドにmainが記述されていません。デフォルトではhelloがあります。



 { "errorMessage": "fork/exec /var/task/hello: no such file or directory", "errorType": "PathError" }
      
      





2.テストjsonが正しく設定されていません。



次のようになります。



 { "id": 12345, "value": "some-value" }
      
      






All Articles