- tocdepth
2
Go
Встроенный в FunctionGraph редактор кода не поддерживает Go. Чтобы запустить код из примера ниже:
На консоли управления выберите
.Нажмите Create Function.
В выпадающем списке Runtime выберите «Go 1.x», а в Handler введите «handler».
Загрузите архив в FunctionGraph.
Сохраните функцию.
Запустите тест.
Выполняемый код
package main import ( "fmt" "go-runtime/go-api/context" "go-runtime/pkg/runtime" ) func Handler(payload []byte, ctx context.RuntimeContext) (interface{}, error) { //Get function name var f_name string = "Hello world! Function (Go1.x) name is " + ctx.GetFunctionName() //Print function name fmt.Println(f_name) return f_name, nil } func main() { runtime.Register(Handler) }
Обработчик
При создании новой функции в FunctionGraph нужно вручную прописать Handler — имя функции, которую FunctionGraph вызывает, чтобы выполнить ваш код. Оно должно соответствовать тому имени, которое вы определяете при создании функции.
В Handler для Go 1.x нужно указать имя исполняемого файла.
Исполняемая функция должна иметь два входящих аргумента:
payload — параметр события, определенный для функции, в формате JSON. Набор атрибутов зависит от типа события.
ctx — контекстные методы, предоставляемые для выполнения функции.
Функция в примере:
func Handler(payload []byte, ctx context.RuntimeContext) (interface{}, error) { // TODO }
Примечание
Редактирование кода в онлайн-интерпретаторе не поддерживается.
Войдите на сервер Linux, на котором установлен Go 1.x SDK.
Скачайте FSS Go SDK и распакуйте в каталог с вашим проектом.
Создайте новый модуль командой:
go mod init handler
Добавьте в конфигурационный файл go.mod путь до библиотек:
module handler go 1.18 require ( go-runtime v0.0.0-00010101000000-000000000000 ) replace ( go-runtime => ./go-runtime )
Добавьте исходники в архив и загрузите в консоль FunctionGraph.
Тест и просмотр результата
Результат выполнения появится после запуска теста и отработки функции.
Нажмите Test и после отработки функции ознакомьтесь с результатами. Если в поле Function Output будет «Hello world! Function (Go1.x) name is [your-function-name]», значит функция отработала правильно.
Контекстные методы
Метод |
Описание |
---|---|
GetRequestID() string |
Получает ID запроса. |
GetRemainingTimeInMilliSeconds() |
Получает оставшееся до тайм-аута время выполнения функции. |
GetAccessKey() string |
Получает Access Key (AK) агентства. Ключ действует в течение 24 часов. Если вы используете этот метод, вам нужно настроить агентство для этой функции. |
GetSecretKey() string |
Получает Secret Key (SK) агентства. Ключ действует в течение 24 часов. Если вы используете этот метод, вам нужно настроить агентство для этой функции. |
GetUserData(key string) string |
Получает значение переменной среды по ключу. |
GetFunctionName() string |
Получает имя функции. |
GetRunningTimeInSeconds() int |
Получает тайм-аут функции. |
GetVersion() string |
Получает версию функции. |
GetMemorySize() int |
Получает объем выделяемой памяти. |
GetCPUNumber() int |
Получает количество mcores, используемых функцией (1 CPU = 1000 mcores). Это значение пропорционально количеству выделяемой памяти. Количество выделяемых mcores рассчитывается следующим образом: Memory / 128 * 100 + 200. |
GetProjectID() string |
Получает ID проекта. |
GetPackage() string |
Получает название приложения, в котором находится функция. |
GetToken() string |
Получает токен агентства. Токен действителен в течение 24 часов. Если вы используете этот метод, вам нужно настроить агентство для этой функции. |
GetLogger() context.RuntimeLogger |
Получает метод logger из контекста. По умолчанию выводится время и ID запроса. |
для Dev & Test