我的要求是我需要编写需要进行一些处理然后调用URL的AWS Lambda函数。这些URL非常适合从堆栈到堆栈。
因此,在堆栈1 Lambda中,URL可以是http://do-something.com,而在堆栈2中,URL可以是http://do-nothing.com
我希望我的Lambda jar是用Jenkins构建的,所以我不能将这些细节放在Lambda Jar中
我的问题是在Lambda中配置此类内容的方法是什么。我能想到的一种方法是将该URL放在标准存储桶中的文件中,Lambda会在每次调用它时读取它。似乎是无效率的,因为它必须每次都读取它。
任何其他建议或推荐的良好做法。
答案 0 :(得分:1)
随着环境变量的出现'对于AWS Lambda,使用相同的方法可以轻松实现。
所以使用'环境变量'是这种情况的方法
答案 1 :(得分:0)
我解决这个问题的方法是使用lambda函数的名称作为DynamoDB表的键。将部署信息部署到AWS时,部署信息将编码为lambda函数名称。
例如,首先将使用附加到名称的DEV标记部署lambda:
$ aws lambda update-function-code --function-name myLambda_DEV
--s3-bucket lambda_s3_release_bucket --s3-key myLambda-1.0.0.jar --publish
然后在lambda中,从上下文中读取函数名称并用于从配置表中读取:
public Response handleRequest(Request request, Context context) {
String functionName = context.getFunctionName();
AmazonDynamoDBClient dbclient = new AmazonDynamoDBClient();
DynamoDB configdb = new DynamoDB(dbclient);
Table config = dynamoDB.getTable("config_" + functionName);
String url = config.getItem("url");
...
}
DynamoDB有一个名为config_myLambda_DEV
的表,如下所示:
name | value
-------+-------------------------
url | http://do-something.com
... |
虽然与lambo的其余部分相比,对DynamoDB(或S3等)的调用可能相对较慢,但实际上lambda函数会被重用。您可以在第一次调用时加载和缓存信息,并在后续调用中使用内存中的值。