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

Jun*_*san 3 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);
Run Code Online (Sandbox Code Playgroud)

试图弄清楚如何传递这个环境变量“profile”。在 SAM 本地运行/调试配置中,我没有看到任何选项可以执行此操作。

jar*_*mod 5

您应该能够依赖AWS_SAM_LOCAL=true提交