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

Если вы развертываете облачную формацию, создавая поток kinesis, как вы можете предоставить выходные данные, такие как arn, для лямбды, созданной в том же развертывании. Происходит ли cf до того, как serverless создает лямбда-выражения, и есть ли способ сохранить значения cloudformation в лямбда-выражении?


person Josh    schedule 11.03.2016    source источник
comment
Начиная с версии 5.0. Я смог использовать. Развертывание ресурсов sls Развертывание функции sls В отношении доступа к выходным данным cf. Это делается путем ссылки на выходное значение из s-resources-cf.json через ${myValue}, а затем сопоставления этого значения с переменными среды в s-function-cf.json через SERVERLESS_MYVALUE: ${myValue}   -  person Josh    schedule 23.03.2016


Ответы (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

Надеюсь, это поможет.

person Matt D    schedule 05.06.2016

Какие этапы развертывания вы выполняете здесь из Serverless? Что касается первой части вашего запроса, я считаю, что вы можете выполнить «развертывание ресурсов sls», чтобы развернуть все ресурсы, связанные с CF, а затем вы выполняете «развертывание функции sls» ИЛИ «развертывание sls dash» для развертывания лямбда-функций. Таким образом, технически развертывание ресурсов (CF) на самом деле не развертывает лямбда-функции.

Что касается второй части вашего запроса, если у вас есть вариант использования, в котором вы хотите использовать вывод создаваемого ресурса CF (на данный момент), это функция была добавлена/объединена с версией 0.5 Serverless, которая еще не выпущена.

person rk2    schedule 15.03.2016