私は、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ファイルを作成しても同じことが言えます。
私は問題を強制し、とにかくそれを追加した場合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インスタンス上で実行されていません。私が読んだことから、EC2上で動作していない場合はaws.region.autoを追加する必要がありますが、プロパティが存在することを確認するアプリケーションを取得できません。同じことがアクセスキーと秘密鍵で起こります。
STSの「認識」プロパティは、クラスパス上のプロパティのメタデータの可用性によって異なります。メタデータを提供するのは、図書館の作者だけです。だから私の推測では、AWSのプロパティは適切なメタデータを持っていないでしょう。おそらく、ライブラリの作者がそれを作成しなかったからです。 – Kris
STSがバックグラウンドで使用する設定メタデータの詳細を知りたい場合、Springブートによって独自の設定用に生成されている設定メタデータについて詳しくは、次のリファレンスを参照してください。https://docs.spring.io/spring-boot/docs /current/reference/html/configuration-metadata.html –