如何确定 Lambda 是 运行 本地还是在 Java AWS 无服务器框架设置下的 AWS
How to determine whether Lambda is running locally or under AWS under Java AWS serverless framework setup
我正在玩 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 本地 run/debug 配置中,我看不到任何选项。
您应该能够依靠 AWS_SAM_LOCAL=true
每个 this commit。
我正在玩 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 本地 run/debug 配置中,我看不到任何选项。
您应该能够依靠 AWS_SAM_LOCAL=true
每个 this commit。