BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AWS LambdaがサーバレスアプリケーションのためにGoをサポート

AWS LambdaがサーバレスアプリケーションのためにGoをサポート

原文(投稿日:2018/01/21)へのリンク

読者の皆様へ:お客様のご要望に応じて、重要なものを逃すことなく、ノイズを低減できる一連の機能を開発しました。興味のあるトピックを選択して、電子メールとWeb通知を入手してください

AmazonはAWS LambdaにおけるGoのサポートを発表した。AWS上で実行されるサーバレスアプリケーションをGoで開発する方法を切り開いた。

Goは、AmazonがAWS LambdaでNode.js、Python、Java、C#とともにサポートを追加した最新の言語である。

GoコードをAWSデプロイメント用に準備するには、ハンドラ関数内に配置する必要がある。このハンドラ関数は次にlambda.Start()に渡される。lambda.Start()は呼び出された後にリターンされることなく、Invoke要求をハンドラに渡すために内部のLambdaエンドポイントと通信する。ハンドラ関数は、リクエストオブジェクトを含む0~2つの引数をとる必要があり、エラーオブジェクトを含む0~2つの値を返す。例えば、次の通りである。

// main.go
package main

import (
    "github.com/aws/aws-lambda-go/lambda"
)

func hello(request Request) (string, error) {
    return "Hello!", nil
}

func main() {
    // Make the handler available for Remote Procedure Call by AWS Lambda
    lambda.Start(hello)
}

AWSでは、Linux用のAWS Lambdaで使用されるGoコードをコンパイルし、AWS Lambdaのデプロイメントの準備を整えるためにそれをzip圧縮する必要がある。これは、例えば次のように実行される。

GOOS=linux go build -o main main.go
zip main.zip main

zipファイルに使用される名前は、デプロイされたLambda関数のHandler設定プロパティと一致しなければならない。

コードがzipファイルとしてパッケージ化されると、AWS CLIを使用してコードをデプロイできる。

$ aws lambda create-function \
--region us-west-1 \
--function-name HelloFunction \
--zip-file fileb://./main.zip \
--runtime go1.x \
--tracing-config Mode=Active
--role arn:aws:iam::<account-id>:role/<role> \
--handler main

さらに、AWSはAWS X-Ray for Goライブラリを提供している。これによって、X-Rayデーモン用にトレースデータを生成でき、開発したGo関数を解析およびデバッグできる。

開発者がGoを使用してAWS Lambda関数を開発しやすくするために、Amazonはライブラリ、サンプル、ツールを含むGitHubリポジトリを公開している。テスト、構築、AWS LambdaへのGoコードのデプロイの詳細はこちら

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT