web-dev-qa-db-ja.com

AWSアプリケーションのSpringブートスタートアップエラー:利用可能なEC2メタデータがありません

Spring boot-AWSアプリケーションをローカルで実行しようとすると、次のエラーが表示されます。

アプリケーションがEC2環境で実行されていないため、利用可能なEC2メタデータはありません。リージョン検出は、アプリケーションがEC2インスタンスで実行されている場合のみ可能です

私のaws-config.xmlは次のようになります:

  <aws-context:context-credentials>
     <aws-context:simple-credentials access-key="*****" secret-key="*****"/>
  </aws-context:context-credentials>  
    <aws-context:context-region auto-detect="false" region="ap-south-1" />  
 <aws-context:context-resource-loader/>  
 <aws-messaging:annotation-driven-queue-listener max-number-of-messages="10" wait-time-out="20" visibility-timeout="3600"/> 

私は以下のクラスのSQSListnerで聴こうとしています:

 @Configuration
 @EnableSqs
 @ImportResource("classpath:/aws-config.xml")
 @EnableRdsInstance(databaseName = "******", 
               dbInstanceIdentifier = "*****", 
               password = "******")
 public class AwsResourceConfig {
@SqsListener(value = "souviksqs", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void receiveNewFileUpload(S3EventNotification event) {
    try {
        if ( event != null && !CollectionUtils.isNullOrEmpty( event.getRecords() ) && event.getRecords().get( 0 ) != null ) {
            S3Entity entry = event.getRecords().get(0).getS3();
            System.out.println("############ File Uploaded to ###################### " + entry.getBucket().getName() + "/" + entry.getObject().getKey());
        }
    } catch (Exception e) {
        System.out.println("Error reading the SQS message " + e);

    }
}

}

編集:次のaws-messaging maven依存関係を含めるとエラーが発生することに注意してください:

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-aws-messaging</artifactId>
         <version>${spring-cloud-aws-version}</version>
    </dependency>

Spring-cloud-aws-versionを使用しています-1.2.1.RELEASE

15
souvikc

問題が見つかりました。 SQSメッセージングにspring-cloud-starter-aws-messagingを使用していました。上記の依存関係には、必要でなくても最終的に起動する多くの自動検出クラスが含まれます。

代わりにspring-cloud-aws-messagingを使用して、他の多くの自動検出の問題とともに問題を解決しました。

4
souvikc

Springframework.cloud.aws.autoconfigureを使用していましたが、同じ問題が発生しました。その理由は、NON AWS ENVIRONMENTでアプリケーションを実行するときにリージョンを手動で設定する必要があるということです。地元。したがって、このプロパティをapplication-local.propertiesに入れてください。

cloud.aws.region.static = us-east-1

39
Shubham Pandey

Application.ymlを使用している場合、私はそれを次のようにしました

spring:
  application:
    name: App Name
  autoconfigure:
    exclude:
      - org.springframework.cloud.aws.autoconfigure.messaging.MessagingAutoConfiguration
      - org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration
      - org.springframework.cloud.aws.autoconfigure.context.ContextRegionProviderAutoConfiguration
1
Robbo_UK

私も同じ問題に直面しましたが、awsリージョンプロパティを追加しても解決しませんでした。私はpomからspring-cloud-starter-aws依存関係を削除したときに同じことを解決できました

0
Titans

私は同じ問題を抱えていましたが、Spring構成にこの除外を追加することで、Spring Cloud AWSが領域を自動構成するのを防ぐことができました。 @SpringBootApplication(exclude = ContextRegionProviderAutoConfiguration.class)

0
priortd