2017-11-07 18 views
0

私は、application.properties(またはapplication.yml)ファイルにAWSプロパティを追加する方法を理解するのが難しく、STSで何が正しく設定されているのか分かりません。AWSアプリケーションを作成するときにAWSプロパティが見つからない

これを再現すると、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インスタンス上で実行されていません。私が読んだことから、EC2上で動作していない場合はaws.region.autoを追加する必要がありますが、プロパティが存在することを確認するアプリケーションを取得できません。同じことがアクセスキーと秘密鍵で起こります。

答えて

1

だから、たくさんの手間をかけて他の投稿を読むと、STSがそれらを認識しなくても、プロパティを追加しても機能するように見えます。

私は

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

を追加し、プログラムが実行されます。

もう1つのことは、プロパティのパスの不一致です。例えば、領事のプロパティは、AWSが

cloud.aws.* 

であるとして、AWSのプロパティを起動するための「春」はありません

spring.cloud.consul.* 

です。私は矛盾の理由があると確信しています、私はそれを知らないだけです。

+1

STSの「認識」プロパティは、クラスパス上のプロパティのメタデータの可用性によって異なります。メタデータを提供するのは、図書館の作者だけです。だから私の推測では、AWSのプロパティは適切なメタデータを持っていないでしょう。おそらく、ライブラリの作者がそれを作成しなかったからです。 – Kris

+1

STSがバックグラウンドで使用する設定メタデータの詳細を知りたい場合、Springブートによって独自の設定用に生成されている設定メタデータについて詳しくは、次のリファレンスを参照してください。https://docs.spring.io/spring-boot/docs /current/reference/html/configuration-metadata.html –

関連する問題