Я использую настройку конвейера с использованием codebuild и использую пакет cloudformation и cloudformation deploy для ускорения стека, который запускает лямбда-функцию. Теперь я знаю, что при развертывании облачной информации мы не можем использовать файл параметров с --parameters-overrides, и этот запрос функции все еще находится в открытом состоянии с AWS https://github.com/aws/aws-cli/issues/2828. Поэтому я пытаюсь использовать обходной путь, используя JQ, который описан в этой ссылке https://github.com/aws/aws-cli/issues/3274#issuecomment -529155262 , как показано ниже.
PARAMETERS_FILE="parameters.json" && PARAMS=($(jq -r '.Parameters[] | [.ParameterKey, .ParameterValue] | "\(.[0])=\(.[1])"' ${PARAMETERS_FILE})) - aws cloudformation deploy --template-file /codebuild/output/packaged.yaml --region us-east-2 --stack-name InitialSetup --capabilities CAPABILITY_IAM --parameter-overrides ${PARAMS[@]}
Этот обходной путь работает хорошо, если проверено с помощью Cli. Я также попробовал этот обходной путь внутри контейнера, так как файл buildspe c .yaml создает в фоновом режиме контейнер, который выполняет эти команды, но codebuild не оправдывает шаг развертывания облачной информации aws и завершается неудачно. Я получаю сообщение об ошибке "aws: error: аргумент --parameter-overrides: ожидается хотя бы один аргумент". Я даже попытался скопировать два шага обходного пути в сценарии оболочки и затем выполнить его, но я столкнулся с ошибкой "[Контейнер] 2020/01/21 09:19:14 Код состояния контекста фазы: COMMAND_EXECUTION_ERROR Сообщение: Ошибка при выполнении команды: ./ test. sh. Причина: выход из состояния 255 "Может кто-нибудь, пожалуйста, подскажите мне здесь. Мой buildspe c .yaml файл выглядит так:
'' 'версия: 0.2
фазы : install: runtime-version: java: команды corretto8:
- wget -O jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
- chmod +x ./jq
- cp jq /usr/bin
- jq --version
pre_build: команды: # - echo "[Фаза предварительной сборки]
build: команды:
- aws cloudformation package --template-file master.yaml --s3-bucket rtestbucket --output-template-file packaged.yaml
- aws s3 cp ./packaged.yaml s3://rtestbucket/packaged.yaml
- aws s3 cp s3://rtestbucket/packaged.yaml /codebuild/output
post_build: команды:
- PARAMETERS_FILE="parameters.json" && PARAMS=($(jq -r '.Parameters[] | [.ParameterKey, .ParameterValue] | "\(.[0])=\(.[1])"' ${PARAMETERS_FILE}))
- ls
- aws cloudformation deploy --template-file /codebuild/output/packaged.yaml --region us-east-2 --stack-name InitialSetup --capabilities CAPABILITY_IAM --parameter-overrides ${PARAMS[@]}
артефакты: тип: zip-файлы: - packaged.yaml