Closed Inv1x closed 1 year ago
Пришлёте PR? Ну или хотя бы пример того, как бы вы хотели описывать эти значения в action'е?
Например:
yc-sa-json-credentials: 'credentials'
...
lockbox-secrets:
- name-in-function: 'test1'
secret_id: 'some_id'
version_id: 'ver_id'
key: 'key'
- name-in-function: 'test2'
secret_id: 'some_id'
version_id: 'ver_id'
key: 'key'
Конкретно сейчас набросить код для подобного не могу, но я надеюсь, что написал понятно и идея видна. По сути, lockbox-secrets
просто будет принимать массив из объектов, описывающих каждый секрет отдельно
Так работать не будет. Input'ы в github action принимают только строки. Никаких списков объектов. https://github.com/actions/toolkit/issues/184#issuecomment-1198653452
А если на подобии такого? Имплементация в Serverless Plugin. Единственное требование - доступ к Lockbox у того же SA, что отвечает за деплой функции. Передавать в качестве multiline параметра
lockbox-secrets: |
name-in-func: ${{ lockbox:<lockbox_secret_id>/<lockbox_secret_key> }}
name-in-func2: ${{ lockbox:<lockbox_secret_id>/<lockbox_secret_key2> }}
Единственное, решение в Serverless, по всей видимости, не самое актуальное, так как нет ни версий функций, ни значений из файла.
async getLockboxSecretKey(secretId: string): Promise<Record<string, string | undefined>> {
const result: Record<string, string | undefined> = {};
const response = await this.lockboxPayloadService.get(CloudApiLockboxPayloadService.GetPayloadRequest.fromPartial({
secretId,
}));
for (const entry of response.entries) {
result[entry.key] = entry.textValue;
}
return result;
}
Так вы не можете примонтировать в переменные окружения функции секрет с типом файл. Так просто не будет работать. Поэтому и нет.
Сейчас приходится использовать отдельный action для получения секретов из Lockbox, а затем их пробрасывать как environment variable. При этом далеко не все значения, приходящие из Lockbox, могут записаться. Было бы круто, если бы была возможность указать именно lockbox переменные