【问题标题】:How do you make use of cloudformation outputs within serverless framework?您如何在无服务器框架中使用 cloudformation 输出?
【发布时间】:2016-06-06 07:43:43
【问题描述】:

如果您部署创建 kinesis 流的 cloudformation,您如何将 arn 等输出提供给在同一部署中创建的 lambda。 cf 是否发生在无服务器创建 lambda 之前,有没有办法将 cloudformation 值存储在 lambda 中?

【问题讨论】:

  • 从 5.0 开始发布。我能够使用。 sls resources deploy sls function deploy 关于访问 cf 输出。这是通过通过 ${myValue} 引用来自 s-resources-cf.json 的输出值然后通过“SERVERLESS_MYVALUE”将该值映射到 s-function-cf.json 中的环境变量来完成的:${myValue}跨度>

标签: serverless-framework


【解决方案1】:

要存储 CloudFormation 模板“s-resource-cf.json”中的 Arn,请将一些项目添加到“输出”部分。

"Outputs": {
  "InsertVariableNameForLaterUse": {
    "Description": "This is the Arn of My new Kinesis Stream",
    "Value": {
      "Fn::GetAtt": [
        "InsertNameOfCfSectionToFindArnOf",
        "Arn"
      ]
     }
    }
   }

Fn::GetAtt 是 CF 中的一个函数,用于从另一个正在创建的资源中获取引用。

当您使用 serverless resources deploy -s dev -r eu-west-1 部署 CF 模板时,将为该阶段/区域创建 Kinesis Stream,并且 Arn 将保存到区域属性文件 /_meta/resources/variables/s-variables-dev-euwest1.json 中。注意初始大小写更改insertVariableNameForLaterUse

然后您可以在函数的s-function.json 中使用它作为 ${insertVariableNameForLaterUse},如环境部分:

"environment": {
  "InsertVariableNameWeWantToUseInLambda": "${insertVariableNameForLaterUse}"
  ...
}

并在您的 Lambda 中使用以下方式引用此变量:

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

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    您在此处从 Serverless 遵循的部署步骤是什么?对于您的问题的第一部分,我相信您可以执行“sls 资源部署”来部署所有 CF 相关资源,然后执行“sls 函数部署”或“sls dash deploy”来部署 lambda 函数。所以从技术上讲,资源部署(CF)实际上并不部署 lambda 函数。

    对于您问题的第二部分,如果您有一个用例想要使用正在创建的 CF 资源的输出,(截至目前)这个feature 已添加/合并到 v0.5尚未发布的 Serverless。

    【讨论】:

      猜你喜欢
      • 2019-09-15
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 2017-12-29
      • 2022-11-27
      • 2021-09-03
      相关资源
      最近更新 更多