我有一个用于管理堆栈的sam / cloudformation模板。我在多个堆栈中使用相同的sam / cloudformation模板。
例如,我有一个dev堆栈和一个prod堆栈。我们有git和CI,可以根据分支更新相应的堆栈。
我的问题是,如何确定我的lambda函数在哪个堆栈/上下文中运行?这对于配置数据库端点很有用。
我知道我可以通过控制台设置环境变量,但是我希望将其尽可能保留在模板中。我看不出将其整合到模板中的好方法。
答案 0 :(得分:2)
我这样做的方法是以这种方式将堆栈名称作为ENV变量传递给Lambda函数:
Globals:
Function:
Environment:
Variables:
STACK_NAME: !Ref AWS::StackName
它使用SAM的Globals部分(因此在模板中的所有Lambda上都设置了环境),并结合了Cloudformation's Pseudoparameters。