【问题标题】:spring cloud AWS detect if running localspring cloud AWS检测是否在本地运行
【发布时间】:2016-04-07 19:50:29
【问题描述】:

我正在为我的引导代码寻找一种快速、简单的方法来检测它是否在 AWS 上运行(与本地环境相反)。

我唯一能想到的就是尝试访问一些实例元数据,例如 @Value("${ami-id:N/A}") String ami;,然后进行 if 检查。我可以将其设为@Conditional,但我希望框架可能已经提供了类似的东西(即“云”配置文件在 Cloud Foundry 上运行时如何自动激活)

【问题讨论】:

  • “云”配置文件由 CF buildpack 自动设置,因此您不会在 AWS 上获得它。不确定是否有任何自动设置的 EC2 环境变量。
  • 不确定这对您的情况是否有帮助,但有一个注释可以仅在 AWS 上运行时有条件地定义 bean:org.springframework.cloud.aws.context.annotation.ConditionalOnAwsCloudEnvironment
  • #Alain - 这就是答案,谢谢

标签: spring-cloud


【解决方案1】:

正如@Alain 所提到的,有几个注释@ConditionalOnAwsCloudEnvironment@ConditionalOnMissingAwsCloudEnvironment 可以用来注释类或方法。在引擎盖下这些使用AwsCloudEnvironmentCheckUtils#isRunningOnCloudEnvironment 所以你可以做类似的事情

final SpringApplication app = new SpringApplication(Application.class);
if (AwsCloudEnvironmentCheckUtils.isRunningOnCloudEnvironment()) {
    app.setAdditionalProfiles("aws");
} else {
    app.setAdditionalProfiles("local");
}
    app.run(args);

【讨论】:

  • 谢谢乔恩,当我写原始问题时,这些并不存在 - k
猜你喜欢
  • 2011-06-02
  • 2020-07-12
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多