Как повторно использовать codepipeline для развертывания различных лямбд, не заменяя существующую лямбду - PullRequest
0 голосов
/ 20 сентября 2018

Я следовал этому руководству https://aws.amazon.com/blogs/devops/aws-building-a-secure-cross-account-continuous-delivery-pipeline/, чтобы настроить развертывание наших лямбд-кросс-аккаунтов с использованием Cloudformation в качестве моего инструмента автоматизации.

В этом репо я использую конвейер: https://github.com/awslabs/aws-refarch-cross-account-pipeline/blob/master/ToolsAcct/code-pipeline.yaml (конвейер начинается в строке 207) , а рассматриваемый конвейер находится в каталоге ToolsAccount/;

Я могу успешно развернуть первую лямбду;однако любое последующее развертывание заменяет старую лямбду, но я хочу, чтобы lambda_1 и lambda_2 присутствовали в консоли, а не только в самой последней.

Для развертывания второй лямбды из всех 6 шагов изВ этом учебном пособии я перезапущу шаги 4 и 5 учебного пособия, как показано ниже:

4. В учетной записи Tools, в которой находится AWS CodePipeline, выполните этот шаблон CloudFormation.Это создает конвейер, но не добавляет разрешения для перекрестных учетных записей (Dev, Test, and Prod)

aws cloudformation deploy --stack-name sample-lambda-pipeline \
--template-file ToolsAcct/code-pipeline.yaml \
--parameter-overrides DevAccount=ENTER_DEV_ACCT TestAccount=ENTER_TEST_ACCT \
ProductionAccount=ENTER_PROD_ACCT CMKARN=FROM_1st_STEP \
S3Bucket=FROM_1st_STEP--capabilities CAPABILITY_NAMED_IAM

5.В учетной записи Tools выполните этот шаблон CloudFormation, который дает доступ к роли, созданной на шаге 4. ЭтоAWS CodeBuild возьмет на себя роль в расшифровке артефактов в корзине S3.Это тот же самый шаблон, который использовался на шаге 1, но с другими параметрами.

aws cloudformation deploy --stack-name pre-reqs \
--template-file ToolsAcct/pre-reqs.yaml \
--parameter-overrides CodeBuildCondition=true

После выполнения обоих этих шагов для развертывания второй лямбды, он успешно развертывает ее, но заменяет другую лямбду, которая уже быларазвернутый ранее в консоли.*

Как я могу сохранить существующую лямбду при развертывании новых, и чтобы все лямбды присутствовали в консоли, а не только самая последняя , которая была развернута?

* Я полагаю, что при повторном выполнении шагов 4 и 5 я создаю набор изменений ранее развернутой лямбды и, таким образом, она будет продолжать заменять старую лямбду в консоли.Если мои предположения верны, то как я могу повторно использовать один и тот же конвейер, но развернуть с ним разные лямбды, не заменяя ранее развернутые лямбды?

Есть ли какой-то атрибут ресурса конвейера облачной информации, который мне не хватает?

1 Ответ

0 голосов
/ 20 сентября 2018

Похоже, вы пытаетесь использовать один конвейер для развертывания нескольких разных независимых сервисов / проектов.Это вызовет проблемы при «переключении» проектов, поскольку шаблон не будет содержать ресурсы из другого проекта, и поэтому CloudFormation решит, что эти ресурсы необходимо удалить.

Вы можете либо:

  • Добавить все лямбда-функции вместе в одном шаблоне
  • Установить отдельный конвейер для набора функций
...