Если вы развертываете облачную формацию, создавая поток kinesis, как вы можете предоставить выходные данные, такие как arn, для лямбды, созданной в том же развертывании. Происходит ли cf до того, как serverless создает лямбда-выражения, и есть ли способ сохранить значения cloudformation в лямбда-выражении?
Как вы используете результаты облачного формирования в бессерверной среде?
Ответы (2)
Чтобы сохранить Arn из шаблона CloudFormation «s-resource-cf.json», добавьте некоторые элементы в раздел «Выводы».
"Outputs": {
"InsertVariableNameForLaterUse": {
"Description": "This is the Arn of My new Kinesis Stream",
"Value": {
"Fn::GetAtt": [
"InsertNameOfCfSectionToFindArnOf",
"Arn"
]
}
}
}
Fn::GetAtt
— это функция в CF для получения ссылки из другого создаваемого ресурса.
При развертывании шаблона CF с помощью serverless resources deploy -s dev -r eu-west-1
Kinesis Stream создается для этой сцены/региона, а Arn сохраняется в файле свойств региона /_meta/resources/variables/s-variables-dev-euwest1.json
. Обратите внимание на изменение начальной заглавной буквы insertVariableNameForLaterUse
.
Затем вы можете использовать это в функции s-function.json
как ${insertVariableNameForLaterUse}
, например, в разделе среды:
"environment": {
"InsertVariableNameWeWantToUseInLambda": "${insertVariableNameForLaterUse}"
...
}
и сослаться на эту переменную в вашей лямбде, используя что-то вроде:
var myKinesisStreamArn = process.env.InsertVariableNameWeWantToUseInLambda;
CloudFormation происходит до развертывания Lambda. Хотя вам, вероятно, следует управлять этим с помощью скрипта, а не просто с помощью панели инструментов:
serverless resources deploy -s dev -r eu-west-1
serverless function deploy --a -s dev -r eu-west-1
serverless endpoint deploy --a -s dev -r eu-west-1
Надеюсь, это поможет.
Какие этапы развертывания вы выполняете здесь из Serverless? Что касается первой части вашего запроса, я считаю, что вы можете выполнить «развертывание ресурсов sls», чтобы развернуть все ресурсы, связанные с CF, а затем вы выполняете «развертывание функции sls» ИЛИ «развертывание sls dash» для развертывания лямбда-функций. Таким образом, технически развертывание ресурсов (CF) на самом деле не развертывает лямбда-функции.
Что касается второй части вашего запроса, если у вас есть вариант использования, в котором вы хотите использовать вывод создаваемого ресурса CF (на данный момент), это функция была добавлена/объединена с версией 0.5 Serverless, которая еще не выпущена.