[英]Configuring values into AWS Lambda written in Java
我的要求是,我需要編寫一個AWS Lambda函數,該函數需要進行一些處理,然后調用URL。 這些URL非常容易在各個堆棧中使用。
因此,在堆棧1 Lambda中,URL可以為http://do-something.com,而在堆棧2中,URL可以為http://do-nothing.com
我會用詹金斯(Jenkins)制成Lambda Jar,所以我也無法將這些細節放入Lambda Jar中
我的問題是在Lambda中配置此類內容的方法是什么。 我可以想到的一種方法是將URL放入標准存儲桶中的文件中,Lambda每次調用都會讀取該文件。 似乎沒有效率,因為它必須每次都讀取它。
任何其他建議或推薦的良好做法。
隨着AWS Lambda的“環境變量”的出現,可以使用它輕松實現。
因此,使用“環境變量”是解決此類問題的方法
我解決此問題的方法是使用lambda函數的名稱作為DynamoDB表的鍵。 將部署信息部署到AWS時,會將其編碼為lambda函數名稱。
例如,首先將在lambda部署時將DEV標簽附加到名稱上:
$ 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
... |
盡管與其余lambda相比,對DynamoDB(或S3等)的調用可能相對較慢,但實際上lambda函數會被重用。 您可以在第一次調用時加載和緩存信息,並在后續調用中使用內存中的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.