Как использовать динамический ключ для "хранилища параметров" в файле спецификации AWS CodeBuild?
У меня в CodeBuild есть файл buildspec.yml, который я хочу считать из хранилища параметров EC2 Systems Manager. CodeBuild поддерживает это через parameter-store
атрибут в вашем файле спецификации.
Проблема в том, что я не могу понять, как использовать переменные окружения, которые установлены ДО выполнения buidlspec.
Вот пример:
version: 0.2
env:
variables:
RUNTIME: "nodejs8.10"
#parameter-store vars are in the format /[stage]/[repo]/[branch]/[eyecatcher]/key
parameter-store: #see https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax
LAMBDA_EXECUTION_ROLE_ARN: "/${STAGE}/deep-link/${BRANCH}/GetUri/lambdaExecutionRoleArn"
ENV_SAMPLE_KEY: "/${STAGE}/deep-link/${BRANCH}/GetUri/key1"
phases:
install:
commands:
...
Как вы можете видеть, я использую AWS для распределения имен в хранилище параметров EC2 Systems Manager. Я хочу повторно использовать эту спецификацию сборки для всех моих этапов, поэтому жесткое программирование не вариант. Вары, которые я использую в Value
строка заполняется как EnvironmentVariables
в моем проекте CodeBuild - так что они доступны до запуска спецификации.
Как мне динамически заполнить Value
хранилища параметров Keys
с чем-то, что не жестко закодировано?
1 ответ
Я нашел этот пост в Stackru - к сожалению, описанная вами функция, похоже, не существует.
Было бы неплохо иметь возможность использовать параметры и функции, схожие с функциями в шаблонах CloudFormation.
Это расширение переменной теперь поддерживается в CodeBuild для сценария использования хранилища параметров. Вы можете определить любую переменную среды в своей спецификации сборки и указать ее в пути для получения хранилища параметров.
version: 0.2
env:
variables:
stage: PRE_PROD
parameter-store:
encryptedVar: CodeBuild-$stage
phases:
build:
commands:
- echo $encryptedVar
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html
Это не говорит об этом явно, но я предполагаю, что вы можете использовать!Sub в любом шаблоне облачной информации, который вы используете для построения этой строки разрешения, и использовать его в ParameterOverride для передачи в ваш buildspec в обычном блоке параметров вместо параметра- блок магазина