Развертывание лямбды Golang


Проблема

Довольно часто нам нужен простой способ создания и развертывания лямбды Golang в AWS без использования SAM или Serverless.

Мы рассмотрим использование CLI для развертывания простой лямбды Golang. Этот пример даст нам строительные блоки для последующей интеграции в конвейер CI/CD.

Видеоинструкция

Письменные инструкции приведены ниже, а вот краткая видеоинструкция, показывающая, как развернуть лямбду Golang.

Решение

1) Предварительные условия

В этой статье предполагается, что у вас уже установлены эти компоненты:

  • Golang
  • AWS CLI
  • Пакет jq для разбора json
  • Разрешения IAM, необходимые для развертывания лямбды

2) Создайте файл main.go

Создайте файл main.go в корневом каталоге.

Вот быстрый сценарий hello world.

package main

import (
    "log"

    "context"

    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
)

func handler(ctx context.Context, request events.APIGatewayProxyRequest) error {
    log.Println("HelloWorld from Golang Lambda")

    return nil
}

func main() {
    lambda.Start(handler)
}
Вход в полноэкранный режим Выход из полноэкранного режима

3) Создайте Makefile

Создайте файл Makefile в корневом каталоге.

Отредактируйте параметры для имени функции и региона

export GOOS=linux
export GOARCH=amd64
export CGO_ENABLED=0
.DEFAULT_GOAL := deploy

deploy:
    go build -o hello
    zip -r function.zip hello
    aws lambda update-function-code --function-name "BlogHelloWorldExample" --zip-file fileb://function.zip --region="eu-west-1" | jq .    
Войти в полноэкранный режим Выйти из полноэкранного режима

Примечание: Если вы получите ошибку Makefile:6: *** missing separator. Stop., убедитесь, что вы заменили пробелы на табуляцию.

4) Установите зависимости Golang

Этот шаг нужно выполнить только один раз:

go mod init example.com/demo
go get github.com/aws/aws-lambda-go/events
go get github.com/aws/aws-lambda-go/lambda
Войдите в полноэкранный режим Выйдите из полноэкранного режима

5) Запустите Makefile

Выполните следующую команду CLI, чтобы собрать, заархивировать и развернуть наш пример Lambda

make deploy
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь вы должны увидеть вывод, подобный этому:

{
  "FunctionName": "BlogHelloWorldExample",
  "FunctionArn": "arn:aws:lambda:eu-west-1:xyz:function:BlogHelloWorldExample",
  "Runtime": "go1.x",
  "Role": "arn:aws:iam::xyz:role/service-role/BlogHelloWorldExample-role-xyz",
  "Handler": "hello",
  "CodeSize": xyz,
  "Description": "",
  "Timeout": 15,
  "MemorySize": 512,
  "LastModified": "2022-06-07T11:09:28.000+0000",
  "CodeSha256": "xyz",
  "Version": "$LATEST",
  "TracingConfig": {
    "Mode": "PassThrough"
  },
  "RevisionId": "xyz",
  "State": "Active",
  "LastUpdateStatus": "InProgress",
  "LastUpdateStatusReason": "The function is being created.",
  "LastUpdateStatusReasonCode": "Creating"
}
Вход в полноэкранный режим Выход из полноэкранного режима

Сводка

Вот и все! Теперь ваша лямбда должна быть развернута. Надеюсь, это даст вам быструю отправную точку для построения конвейера.

Оцените статью
devanswers.ru
Добавить комментарий