переменные среды по умолчанию для облачных функций Google не установлены - PullRequest
2 голосов
/ 28 мая 2020

Существуют ли какие-либо условия для переменных среды по умолчанию, устанавливаемых в облачной функции Google?

У меня есть следующий код:

func init() {
    projectID := os.Getenv("GCP_PROJECT")
    log.Printf("projectID: %s\n", projectID)

    functionName := os.Getenv("FUNCTION_NAME")
    log.Printf("functoinName: %s\n", functionName)

    region := os.Getenv("FUNCTION_REGION")
    log.Printf("region: %s\n", region)
}

и значения пустые.

Даже если я сделаю:

func GameUpdate(ctx context.Context, e FirestoreEvent) error {
    functionName := os.Getenv("FUNCTION_NAME")
    log.Printf("functoinName: %s\n", functionName)
}

Они все еще пусты.

Согласно документации , я ожидаю, что они будут установлены и доступны. Но это не так: |

EDIT:

Я использую go 1.13 в качестве среды выполнения, и, как упоминалось в Armatorix , эти переменные env недоступны в этой среде выполнения. ..

Зачем мне они понадобились, так это написать оболочку для cloud.google.com/go/logging, чтобы иметь возможность отмечать серьезность журналов.

Я закончил тем, что добавлял свои журналы стандартного вывода с помощью [INFO] / [ERROR], и создание из него тега \[([A-Z]+)\].*. Бонус в том, что мне не нужно выполнять сетевой вызов в моей функции для отправки журналов.

По-прежнему разочаровывает то, что эти переменные среды недоступны.

Ответы [ 3 ]

3 голосов
/ 29 мая 2020

Значит, я читал ту же документацию. Здесь у вас есть информация о том, что это работает с go1.11 (и это работает, я тестировал). НО для go1.13 они не установлены. Вы все еще можете сделать это вручную. Также я проверил, какие env установлены в версии 1.13.

From os.Envrion ()

PATH=/layers/google.go.build/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
FUNCTION_SIGNATURE_TYPE=http
DEBIAN_FRONTEND=noninteractive
HOME=/root
K_REVISION=9
FUNCTION_TARGET=HelloWorld
PORT=8080
GOROOT=/usr/local/go/
CGO_ENABLED=1
PWD=/srv
K_SERVICE=function-1

Итак, env, который вы, вероятно, захотите использовать, это K_SERVICE

1 голос
/ 29 мая 2020

Я создал запрос функции от вашего имени, чтобы команда разработчиков облачных функций могла реализовать автоматический c набор этих переменных среды в более новых версиях среды выполнения, например Node.js 10 и Go1.13.

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

Я надеюсь это помогает.

0 голосов
/ 08 июля 2020

Я создал библиотеку именно для этой цели: github.com / ncruces / go -gcf / logging

Но вы правы, в среде выполнения Go 1.13 , эти переменные среды отсутствуют. В руководстве по миграции они предлагают установить их при развертывании.

Позже я обнаружил, что рекомендуемый способ сделать это - использовать структурированное ведение журнала .

// Structured logging can be used to set severity levels.
// See https://cloud.google.com/logging/docs/structured-logging.
fmt.Println(`{"message": "This has ERROR severity", "severity": "error"}`)

Итак, сейчас я нахожусь в процессе "устаревания" моей библиотеки и создания новой с более простым подходом: github.com / ncruces / go -gcp / glog

Это достаточно просто, поэтому библиотека на самом деле не требуется, но помогает правильно JSON escape-сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...