USECASE
У меня есть стек облачной информации, в котором более 15 лямбд. Я могу развернуть стек через Codepipeline
, который состоит из двух этапов CodeCommit
и CodeDeploy
. В этом подходе весь мой лямбда-код находится в шаблоне облачной информации (т.е. в коде inline). Из соображений безопасности я хочу изменить это Inline
на S3
, для которого inturn требуется S3BucketName
и S3Key
.
В качестве временного решения
На данный момент я архивирую каждый лямбда-файл и передаю вручную S3keyName
и bucketname
в качестве параметров в мой стек.
Есть ли способ сделать этот шаг через Codepipeline?
Мое предположение о CodeBuild
Я знаю, что мы можем использовать CodeBuild
для него. Но до сих пор я видел, что CodeBuild
используется только для создания файла package.json
. Но в моем случае у меня нет никаких. И также я вижу, что можно указать команду cloudformation package
для переноса моей лямбды с локального на S3, эта команда будет генерировать S3 codeuri`, но это для безсерверных приложений, где будет одна лямбда, но в моем случае у меня 15.
Что я пробовал
Я знаю, что как только вы дадите git push
на codecommit
, он сохранит ваш код в S3. Так что я подумал, чтобы получить S3BucketName
и S3KeyName
из файла, отправленного codecommit, и передать эти параметры моему шаблону CFN. Я могу получить S3BucketName
, но S3KeyName
Я не знаю, как это получить? И я не знаю, является ли этот испытанный apporach подходящим?
Кстати, я знаю, что могу использовать сценарий оболочки только для автоматизации этого процесса. Но есть ли способ сделать это через CODE PIPELINE ?
Обновление - пробный подход без сервера
По сути, я запускаю два действия сборки с двумя разными средами выполнения (т. Е. Узлами, Python), которые выполняются независимо. Поэтому, когда я использую подход без сервера, каждая сборка создаст файл template-export.yml с кодурой bucketlocation, это означает, что у меня будет two template-export.yml files
. Одна проблема с Serverless
подходом к этому должна быть create changeset
, и тогда это вызовет Execute changeset
. Из-за этого мне нужно merge those two template-export.yml files
и запустить это create changeset
действие, а затем execute changeset
. Но я не знал, есть ли команда для объединения двух SAM templates
. Иначе один стек template-export.yml заменит другой стек template-export.yml.
Любая помощь приветствуется
Спасибо