如何处理通过lambda共享的常量?

如何处理通过lambda共享的常量?,lambda,aws-lambda,Lambda,Aws Lambda,有没有一种聪明的方法可以在不同的lambda上共享常量 我可以使用环境变量,但我不想让它们可配置。作为一个选项,您可以选中它。作为一个选项,您可以选中它。最好的方法是使用Lambda层。可以使用需要在不同Lambda中使用的常量定义Lambda层 以下面的层为例,将其称为常量(在Javascript中): 然后,为了在Lambda中使用它,必须使用该层配置每个Lambda。在lambda本身中,可以得到如下常量值: const constants = require('constants');

有没有一种聪明的方法可以在不同的lambda上共享常量


我可以使用环境变量,但我不想让它们可配置。

作为一个选项,您可以选中它。

作为一个选项,您可以选中它。最好的方法是使用Lambda层。可以使用需要在不同Lambda中使用的常量定义Lambda层

以下面的层为例,将其称为
常量
(在Javascript中):

然后,为了在Lambda中使用它,必须使用该层配置每个Lambda。在lambda本身中,可以得到如下常量值:

const constants = require('constants');

exports.handler = async (event) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify(constants.GB_TO_BYTE)
    };
    return response;
};

前面的Lambda将在整个代码中使用
常量.GB_TO_BYTE
作为常量。显然,该层可用于需要该层中定义的常数的所有其他Lambda。

最好的方法是使用Lambda层。可以使用需要在不同Lambda中使用的常量定义Lambda层

以下面的层为例,将其称为
常量
(在Javascript中):

然后,为了在Lambda中使用它,必须使用该层配置每个Lambda。在lambda本身中,可以得到如下常量值:

const constants = require('constants');

exports.handler = async (event) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify(constants.GB_TO_BYTE)
    };
    return response;
};

前面的Lambda将在整个代码中使用
常量.GB_TO_BYTE
作为常量。显然,该层可用于需要该层中定义的常量的所有其他lambda。

或AWS Secrets Manager服务我们的问题是,它很慢。您应该缓存变量,因此,在lambda的温暖状态下,您不需要每次触发lambda时都从SSM请求变量。或者AWS Secrets Manager服务我们的问题是,它很慢,您应该缓存变量,因此在lambda的温暖状态下,您不需要每次触发lambda时都从SSM请求变量。这将起作用,但这不是共享常数的理想方式,因为层不容易更改。在AWS资源中共享密钥的“智能”方法是使用Systems Manager参数存储或Secrets Manager,因为它们提供KMS加密密钥,并可以执行自动密钥旋转等操作。此外,IMO比lambda层更容易实现,并且可以由EC2使用。这将起作用,但不是共享常量的理想方式,因为层不容易更改。在AWS资源中共享密钥的“智能”方法是使用Systems Manager参数存储或Secrets Manager,因为它们提供KMS加密密钥,并可以执行自动密钥旋转等操作。而且IMO比lambda层更容易实现,并且可以被ec2使用