设想:
我有一个无服务器/cloudformation 脚本,它将具有不同配置的相同代码作为 lambda 重新部署到 AWS,并通过 API 网关公开每个 lambda。
到目前为止,我能够做到这一点的唯一方法是通过在同一个脚本中进行大量复制和粘贴......但它开始让我上墙......因此,因为我是 AWS 的完全新手而且,在回答这个问题时,浏览 AWS 文档和互联网产生了非常糟糕的结果......我在这里试试运气。
在 cloudformation 脚本中:
"Resources":{
"LambdaResourceNG":{
"Type":"AWS::Serverless::Function",
"Properties":{
"Handler":"some-handlername::foo::bar",
"Runtime":"dotnetcore2.0",
"Environment":{
"Variables":{
"PictureOptions__OriginalPictureSuffix":{
"Fn::Join":[
"",
[
"_",
"ng",
"_",
{
"Fn::FindInMap":[
"Environments",
{
"Ref":"EnvironmentValue"
},
"PictureOptionsOriginalPictureSuffix"
]
}
]
]
},
},
"Events":{
"Bar":{
"Type":"Api",
"Properties":{
"Path":"/ng/bar",
"Method":"POST"
}
},
"Foo":{
"Type":"Api",
"Properties":{
"Path":"/ng/foo",
"Method":"POST"
}
}
}
}
},
}
问题:
在上面的脚本块中.. 资源被称为LambdaResourceNG
。如果我想要其他资源... LambdaResourceKE
...所有适当的部分都更改为KE
. 我将如何制作一个可以在这种 erm ... 语言中重复使用的“功能”?
我已经找到了如何使用映射根据某些 env 值交换变量……但是如何创建可重用的代码/配置块?
如果现有的 CloudFormation嵌套堆栈功能不够用并且您需要真正的可编程性,那么最终的 CF 模板可以是更高级别流程的输出。
有一些工具可用于创建模板,例如AWS Cloud Development Kit、Troposphere和cfndsl。
另一种选择是从 CLI 驱动最终模板的创建。它不必特别复杂,只需包含模板引擎(如 jinja2 或把手)即可。然后,您可以对包含可重用模板片段的内容进行编程,将值动态注入这些片段,根据需要迭代循环,并发出最终的 CloudFormation 模板(或主模板和一组嵌套模板)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句