如何知道 sam/cloudformation 堆栈 lambda 正在执行啥

Posted

技术标签:

【中文标题】如何知道 sam/cloudformation 堆栈 lambda 正在执行啥【英文标题】:How to know what sam/cloudformation stack lambda is executing in如何知道 sam/cloudformation 堆栈 lambda 正在执行什么 【发布时间】:2019-07-14 20:58:00 【问题描述】:

我有一个用于管理堆栈的 sam/cloudformation 模板。我在多个堆栈中使用相同的 sam/cloudformation 模板。

例如,我有一个开发堆栈和一个产品堆栈。我们有 git 和 CI 可以根据分支更新相应的堆栈。

我的问题是,我如何知道我的 lambda 函数在哪个堆栈/上下文中运行?这对于配置数据库端点很有用。

我知道我可以通过控制台设置环境变量,但我希望尽可能将其保留在模板中。我没有看到将其合并到模板中的好方法。

【问题讨论】:

不清楚您所说的“我的 Lambda 函数”是什么意思。显然,您可以通过查看 Cloudformation 中的资源部分来查看包括 Lambda 函数在内的所有资源。 @AlexHarvey 我想我的意思是我的代码如何知道它在哪个 lambda 函数中运行?两个堆栈使用相同的代码 【参考方案1】:

我这样做的方法是将堆栈名称作为 ENV var 传递给 Lambda 函数:

Globals:
  Function:
    Environment:
      Variables:
        STACK_NAME: !Ref AWS::StackName

它使用 SAM 的 Globals 部分(因此在模板中的所有 Lambda 上设置环境),并结合 Cloudformation's Pseudoparameters。

【讨论】:

感谢您的建议!在阅读了有关环境变量的内容后,我还找到了一篇相关的帖子。看起来您实际上可以使用 deploy cli 命令***.com/questions/51439163/… 设置这些

以上是关于如何知道 sam/cloudformation 堆栈 lambda 正在执行啥的主要内容,如果未能解决你的问题,请参考以下文章

如何知道指针指向堆还是栈?

当 Java 中存在堆溢出时,我如何知道啥在使用内存?

如何清除flutter web中的堆内存?

Step Function 中的嵌套 Step Function:未知错误:“...未授权创建托管规则”

如何查找堆中的对象数

如何在c函数中访问堆起始地址和堆基地址