簡體   English   中英

將值配置為用Java編寫的AWS Lambda

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM