我正在努力弄清楚如何将AWS属性添加到我的application.properties(或application.yml)文件中,而且我不确定我在STS中设置错误。
我可以使用Spring Initializr重现这个创建一个简单的AWS应用程序。我正在添加AWS,Consul和REST,因为这是真正的应用程序正在使用的。这是它产生的POM。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>edu.dkist</groupId>
<artifactId>staging-service-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>staging-service-demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR4</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
我没有为此示例的应用程序添加任何代码,只添加生成的代码。这是一个测试,看看我正在处理的应用程序是否有问题。当我尝试添加应用程序属性时,AWS没有显示任何内容。如果我创建一个YAML文件,情况也是如此。
如果我强行解决问题,无论如何都要添加它,STS称该属性未知。
编译应用程序会抛出异常:
Caused by: java.lang.IllegalStateException: There is not EC2 meta data available, because the application is not running in the EC2 environment. Region detection is only possible if the application is running on a EC2 instance
该应用未在EC2实例上运行,它在本地运行。根据我的阅读,我需要添加aws.region.auto,如果它没有在EC2上运行,但我无法让应用程序确认该属性存在。访问密钥和密钥也是如此。
答案 0 :(得分:1)
所以...经过大量的修补和阅读其他帖子之后,如果添加它们,属性将会起作用,即使STS无法识别它们。
我添加了
cloud:
aws:
credentials:
instanceProfile: false
region:
static: eu-west-1
stack:
auto: false
程序将运行。
绊倒我的另一件事是属性的路径不一致。例如,Consul属性位于
spring.cloud.consul.*
AWS位于
cloud.aws.*
启动AWS属性没有“弹簧”。我确定有不一致的原因,我只是不知道。