创建AWS应用程序时缺少AWS属性

时间:2017-11-07 21:20:43

标签: spring spring-boot spring-tool-suite

我正在努力弄清楚如何将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文件,情况也是如此。

Missing AWS properties

如果我强行解决问题,无论如何都要添加它,STS称该属性未知。

Unknown property aws

编译应用程序会抛出异常:

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上运行,但我无法让应用程序确认该属性存在。访问密钥和密钥也是如此。

1 个答案:

答案 0 :(得分:1)

所以...经过大量的修补和阅读其他帖子之后,如果添加它们,属性将会起作用,即使STS无法识别它们。

我添加了

cloud:   
  aws:
  credentials:
    instanceProfile: false
  region:
    static: eu-west-1
  stack:
    auto: false

程序将运行。

绊倒我的另一件事是属性的路径不一致。例如,Consul属性位于

spring.cloud.consul.*

AWS位于

cloud.aws.*

启动AWS属性没有“弹簧”。我确定有不一致的原因,我只是不知道。