在Java AWS无服务器框架设置下,如何确定Lambda是在本地运行还是在AWS下运行

时间:2018-09-20 02:37:53

标签: java amazon-web-services serverless-framework

我正在使用AWS SAM Java无服务器应用程序。我正在使用eclipse AWS无服务器插件来创建基于Dynamo DB的简单CRUD应用程序。应用程序接收一个http请求,然后根据HTTP方法尝试在DynamoDB上进行相应的CRUD操作。

因此,除了我无法弄清楚如何将环境变量或属性文件传递给我的Lambda Java代码来确定lambda是在本地还是在AWS环境中运行之外,其他所有程序都工作正常。取决于我要使用本地Dynamo DB客户端还是AWS DB客户端。这是该代码段:

    String environment = System.getenv("profile");
    AmazonDynamoDB dynamoDBclient = null;

    if("local".equalsIgnoreCase(environment)) {
        dynamoDBclient = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
                new AwsClientBuilder.EndpointConfiguration("http://172.16.123.1:8000", "local"))
                .build(); 
    } else {
        dynamoDBclient = AmazonDynamoDBClientBuilder.standard().build();
    }

    dynamoDBMapper = new DynamoDBMapper(dynamoDBclient);

试图弄清楚如何使用此环境变量“ profile”。在SAM本地运行/调试配置中,我看不到任何选择。

1 个答案:

答案 0 :(得分:2)

您应该能够每this commit依靠AWS_SAM_LOCAL=true